使用DISTINCT关键字导致此错误:不是一个SELECTedexpression式

我有一个这样的查询:

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 

这会导致以下exception:

 Caused by: org.hibernate.exception.SQLGrammarException: ORA-01791: not a SELECTed expression 

如果我删除DISTINCT关键字,查询运行没有问题。 如果我删除order by子句,查询运行没有问题。 不幸的是,我似乎无法得到没有重复的有序结果集。

您正尝试使用未计算的列来sorting结果。 如果您没有DISTINCT ,那么这不会成为问题,但是由于您的查询基本上只是由share.rooms列进行分组,所以如何将结果集与其他可以具有多个值的列一起sortingshare.rooms一个?