Tratando de crear un objeto a partir de una consulta HQL, pero que no puede averiguar 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 debo usar el nuevo MyCustomList(el producto.código, SUM(… , aunque no asignados?)
Ahora quiero lanzar 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){ //...

La recuperación de los datos:

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

El uso de Juego de marco

InformationsquelleAutor Indrek | 2010-10-26

2 Comentarios

  1. 46

    Creo que la sección 15.6. La cláusula select cubre lo que usted está tratando de lograr:

    15.6. La cláusula select

    Consultas pueden devolver varios objetos
    y/o propiedades de 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 un 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 clase Family
    tiene un constructor apropiado – como un
    real typesafe objeto Java:

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

    En su caso, probablemente te interese:

    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 asignada.

  2. 1

    Sé que este es un viejo post, pero también se puede utilizar para HQL:

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

    o esta para SQL:

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

    con:

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

Dejar respuesta

Please enter your comment!
Please enter your name here