HQLで次のことを行う方法はありますか?
SELECT
case when flag = true then SUM(col1) else SUM(col2)
FROM
myTable
HQLで次のことを行う方法はありますか?
SELECT
case when flag = true then SUM(col1) else SUM(col2)
FROM
myTable
どうやらこれを行う機能は 3.0.4で追加されたようで、else 句でサブ選択を使用できないという制限があります。
Hibernate フォーラムを参照してください: https://forum.hibernate.org/viewtopic.php?t=942197
チーム (Gavin) からの回答: ケースは where 句でサポートされていますが、HB3 の select 句ではサポートされていません。
また、状態が「未解決」の JIRA で見られます。
以下に、2 つの case ステートメントを使用してブール値を対応するテキスト表現に置き換える作業クエリ (postgresql で休止状態) を示します。
SELECT CASE ps.open WHEN true THEN 'OPEN' else 'CLOSED' END, CASE ps.full WHEN true THEN THEN 'FULL' else 'FREE' END, ps.availableCapacity FROM ParkingState as ps
これは、次の条件で文字列比較を使用した例です。
SELECT CASE f.type WHEN 'REMOVE'
THEN f.previousLocation
ELSE f.currentLocation
END
FROM FileOperation f