1

Oracle の次のクエリを Hibernate HQL クエリに変換したい

select 
      SYSTEM, 
      sum(decode(trim(XAXIS),'HIGH',YAXIS,0)) H,
      sum(decode(trim(XAXIS),'MEDIUM',YAXIS,0)) M, 
      sum(decode(trim(XAXIS),'LOW',YAXIS,0)) L
      from HOME 
      where
          DATA_KEY=5 
      GROUP BY SYSTEM

データベースに依存しないように使用createQuery()したいが、Native SQL は使用したくない

上記のクエリを Hibernate で記述するにはどうすればよいですか?

4

3 に答える 3

0

まず、という名前のエンティティを作成する必要がありますHomedecode関数は HQL ではサポートされていませんが、次のような式でプロパティを作成できます。

<property name="prop1" type="Double" formula="decode(trim(XAXIS),'HIGH',YAXIS,0)" />
<property name="prop2" type="Double" formula="decode(trim(XAXIS),'MEDIUM',YAXIS,0)" />
<property name="prop3" type="Double" formula="decode(trim(XAXIS),'LOW',YAXIS,0)" />

次に、HQL クエリを記述できます。

select 
    h.SYSTEM, 
    sum(h.prop1) H,
    sum(h.prop2) M, 
    sum(h.prop3) L
from HOME h
where h.DATA_KEY=5 
GROUP BY h.SYSTEM
于 2013-04-08T14:23:10.660 に答える
0

なぜですか?HQL クエリは文字列ベースであり、CreateSqlQuery も同様です。使用する場合Session.CreateSqlQuery()、HQL 構文について何も知る必要はありません。

于 2013-04-08T12:07:49.040 に答える