2008-09-12 15 views
33

Estoy tratando de obtener solo la lista de identificación de objeto bob por ejemplo en lugar de la lista de bob. Está bien con una solicitud HQL, pero yo sabría si es posible usar criterios?¿Cómo usar los criterios de hibernación para devolver solo un elemento de un objeto en lugar de todo el objeto?

Un ejemplo:

final StringBuilder hql = new StringBuilder(); 
hql.append("select bob.id from ") 
    .append(bob.class.getName()).append(" bob ") 
    .append("where bob.id > 10"); 

final Query query = session.createQuery(hql.toString()); 
return query.list(); 

Respuesta

45

creo que se podría hacer eso con proyecciones, algo así como

Criteria.forClass(bob.class.getName()) 
     .add(Restrictions.gt("id", 10)) 
     .setProjection(Projections.property("id")) 
     ); 
8

o setProjection (Projections.id())

16

Del mismo modo, también puede:

Criteria criteria = session.createCriteria(bob.class); 

criteria.add(Expression.gt("id", 10)); 

criteria.setProjection(Projections.property("id")); 

criteria.addOrder(Order.asc("id")); 

return criteria.list(); 
1

Otra opción (aunque un poco ONU hibernación-esque) es el uso de SQL "en bruto", como este:

List<Long> myList = session.createSQLQuery("select single_column from table_name") 
      .addScalar("single_column", StandardBasicTypes.LONG).list(); 
-1

puede hacerlo como esto

bob bb=null; 

    Criteria criteria = session.createCriteria(bob.class); 
    criteria.add(Restrictions.eq("id",id)); 

    bb = (bob) criteria.uniqueResult(); 

como restricciones puede agregar su condición

+1

No es la respuesta a la pregunta, pero fue útil para mí –

Cuestiones relacionadas