tables - like hibernate
Cómo devolver una entidad con columnas elegidas usando criterios (3)
Esto es exactamente para lo que son las proyecciones. Aquí hay un ejemplo:
Criteria cr = session.createCriteria(User.class)
.setProjection(Projections.projectionList()
.add(Projections.property("id"), "id")
.add(Projections.property("Name"), "Name"))
.setResultTransformer(Transformers.aliasToBean(User.class));
List<User> list = cr.list();
De hecho, si nos fijamos en la documentación de "recuperación de propiedades perezosa", dicen específicamente:
"Una forma diferente (¿mejor?) De evitar lecturas de columnas innecesarias, al menos para transacciones de solo lectura, es usar las funciones de proyección de las consultas de HQL o Criteria. Esto evita la necesidad de procesamiento de bytecode en tiempo de compilación y ciertamente es una solución preferida".
Por cierto, hay una pregunta relacionada que también le puede interesar: Hibernar consulta por ejemplo y proyecciones
Soy realmente nuevo con Hibernate. Quiero un List<User>
con criterios de hibernación, pero solo con los campos Id. De usuario y nombre rellenados. ¿Es eso posible? Algo así como la consulta que se muestra a continuación:
SELECT user.id, user.name FROM user
Saludos.
Estoy demorando en responder esto, pero puede agregar un transformador de resultados personalizado al objeto Query como se muestra a continuación.
Query query = session
.getNamedQuery(
"someNamedQueryWhichISHQL")
.setString("cod", "10")
.setResultTransformer(new ResultTransformer() {
public Object transformTuple(Object[] row, String[] arg1) {
User usr = new User(row[0],row[1]);
return usr
}
public List transformList(List arg0) {
return arg0;
}
});
return query.list();
Normalmente, no desea cargar parcialmente las propiedades de un objeto. Pero si debes, ve esto:
Para un comportamiento simple similar a la presentación de informes, puede usar consultas de entidad:
sess.createSQLQuery("SELECT ID, NAME, BIRTHDATE FROM CATS").addEntity(Cat.class);
http://docs.jboss.org/hibernate/stable/core/manual/en-US/html/querysql.html#d0e17633