29

HQL クエリからオブジェクトを作成しようとしていますが、何が間違っているのかわかりません。

クエリ:

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

(または、マップされていなくても、 new MyCustomList(product.code, SUM(... を使用する必要がありますか?) この返されたリストを同様のオブジェクトにキャストしたいと思います。

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 フレームワークの使用

4

2 に答える 2

53

15.6節だと思います。select 句は、達成しようとしているものをカバーしています。

15.6. select 節

...

クエリは、複数のオブジェクトやプロパティを type の配列として返すことができます 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 - 実際のタイプセーフ 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

WhereMyCustomListは、マップされたエンティティであるとは限りません。

于 2010-10-26T21:52:54.843 に答える