Nuevo objeto con HQL

Tratando de crear un objeto a partir de una consulta HQL, pero simplemente no puedo entender lo que estoy haciendo mal.

Consulta:

String query = "SELECT product.code, SUM(product.price), COUNT(product.code) from Product AS product GROUP BY product.code" 

(¿o debería usar MyCustomList nueva (product.code, SUM (…, aunque no está mapeada?) Ahora quiero convertir esta lista devuelta en un objeto similar:

 class MyCustomList{ public String code; public BigDecimal price; public int total; // Constructor public MyCustomList(String code, String price, int total){ //... 

Recuperando los datos:

 // This throws ClassCastException List list = MyClass.find(query).fetch(); 

Usando el marco Play

Creo que la sección 15.6. La cláusula de selección cubre lo que intenta lograr:

15.6. La cláusula de selección

Las consultas pueden devolver múltiples objetos y / o propiedades como una matriz de tipo Object[] :

 select mother, offspr, mate.name from DomesticCat as mother inner join mother.mate as mate left outer join mother.kittens as offspr 

O como una List :

 select new list(mother, offspr, mate.name) from DomesticCat as mother inner join mother.mate as mate left outer join mother.kittens as offspr 

O, suponiendo que la Family la clase tiene un constructor apropiado, como un objeto Java de tipo seguro real:

 select new Family(mother, mate, offspr) from DomesticCat as mother join mother.mate as mate left join mother.kittens as offspr 

En tu caso, probablemente quieras:

 SELECT new MyCustomList(product.code, SUM(product.price), COUNT(product.code)) from Product AS product GROUP BY product.code 

Donde MyCustomList no es necesariamente una entidad mapeada.

Sé que esta es una publicación anterior, pero también puedes usarla para HQL:

 Query query = session.createQuery("SELECT code AS code FROM Product"); 

o esto para SQL:

 Query query = session.createSQLQuery("SELECT code AS code FROM Product"); 

con:

 query.setResultTransformer(Transformers.aliasToBean(MyCustomList.class));