Вопрос

Попытка создать объект из запроса HQL, но просто не могу понять, что я делаю не так.

Запрос:

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

(Или я должен использовать новый mycustomlist (product.code, сумма (..., хотя это не отображается?) Теперь я хочу бросить этот возвращенный список в аналогичный объект:

class MyCustomList{
  public String code;
  public BigDecimal price;
  public int total;

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

Получение данных:

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

Использование Play Framework

Это было полезно?

Решение

Я думаю, что раздел 15,6. Статья выбора охватывает то, что вы пытаетесь достичь:

15,6. Статья выбора

...

Запросы могут вернуть несколько объектов и / или свойств в виде массива типа Object[]:

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

Или как а 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

Или - предполагая, что класс FamilyИмеет соответствующий конструктор - как настоящий объект SystemaFe Java:

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

В вашем случае вы, вероятно, хотите:

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

Где MyCustomList не обязательно сопоставлен сущность.

Другие советы

Я знаю, что это старый пост, но вы также можете использовать для HQL:

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

Или это для SQL:

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

с:

query.setResultTransformer(Transformers.aliasToBean(MyCustomList.class));
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top