次のようなクエリがあります。
SELECT DISTINCT share.rooms
FROM Shares share
left join share.rooms.buildingAdditions.buildings.buildingInfoses as bi
... //where clause omitted
ORDER BY share.rooms.floors.floorOrder, share.rooms.roomNumber,
share.rooms.firstEffectiveAt, share.shareNumber, share.sharePercent
次の例外が発生します。
Caused by: org.hibernate.exception.SQLGrammarException: ORA-01791: not a SELECTed expression
DISTINCTキーワードを削除すると、クエリは問題なく実行されます。 order by句を削除すると、クエリは問題なく実行されます。残念ながら、重複することなく順序付けられた結果セットを取得することはできません。
計算されていない列で結果を並べようとしています。 DISTINCT
がなくても問題ありませんが、クエリは基本的にshare.rooms
列のみでグループ化されるため、結果セットを他の列と並べ替える方法はありますか同じshare.rooms
oneに複数の値がありますか?
この投稿は少し古いですが、このエラーを回避するためにしたことの1つは、クエリをラップして、そのように外部で順序を適用することです。
SELECT COL
FROM (
SELECT DISTINCT COL, ORDER_BY_COL
FROM TABLE
// ADD JOINS, WHERE CLAUSES, ETC.
)
ORDER BY ORDER_BY_COL;
お役に立てれば :)