我有ORACLE数据库和2个表。我需要从表1内部连接表2和顺序ORACLE RowID列选择行。要选择,我使用条件查询。要添加by语句的顺序,我使用
criteria.addOrder(Order.asc("this.rowId"));
在映射RowId看起来像
<property name="rowId" column="ROWID" insert="false" update="false"/>
但是hibernate会生成错误的sql查询,比如
select this_.docId as attr0_, this_.name as attr1_ from table1 this_ inner join table2 t2_ on this_.docId=t2_.docId order by ROWID asc
Hibernate从查询中删除别名"this"因为ORACLE中所有的表都有ROWID列,所以出现ORACLE错误ORA-00918
我如何写正确的查询hibernate的标准,以订购oracle RowId列?
Hibernate认为rowid是一个oracle函数,但它是一个列标识符。要hibernate rowwid是一个列名我们需要将hibernate映射写成
<property name="rowId" column="`ROWID`" insert="false" update="false"/>