我有一个查询,看起来像这样:
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?
DISTINCT
share.rooms