2012-05-18 23 views
34

Me gustaría seleccionar una sola columna en lugar de un objeto completo, utilizando Hibernate. Hasta ahora tengo esto:¿Cómo se selecciona una columna usando Hibernate?

List<String> firstname = null; 

firstname = getSession().createCriteria(People.class).list(); 

Mi problema es que el código anterior devuelve la tabla enteros gente como un objeto en lugar de sólo "nombre". No estoy seguro de cómo especificar que solo se devuelva "nombre" en lugar de todo el objeto.

Respuesta

7

Si necesita consultar 2 o más columnas y obtener los valores de la consulta, esta es la manera de hacerlo:

.... 
crit.setProjection(Projections.property("firstname")); 
crit.setProjection(Projections.property("lastname")); 

List result = crit.list(); 

... 

for (Iterator it = result.iterator(); it.hasNext();) { 
    Object[] myResult = (Object[]) it.next(); 
    String firstname = (String) myResult[0]; 
    String lastname = (String) myResult[1]; 

    .... 
} 
2

Puede utilizar ProjectionList si quieres condición proyección base por ej.

ProjectionList prjection = Projections.projectionList(); 
if(abc){ 
    prjection.add(Projections.property("firstname")); 
} 
else if(xyz){ 
    prjection.add(Projections.property("lastname")); 
} 

    ........ 

    criteria.setProjection(prjection); 
Cuestiones relacionadas