2

我有 ORACLE DB 和 2 个表。我需要从 table1 内部连接 ​​table2 中选择行并按 ORACLE RowID 列排序。要选择我使用标准查询。要按我使用的语句添加订单

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

休眠从查询中删除别名“this”。因为 ORACLE 中的所有表都有 ROWID 列,所以我们有 oracle 错误 ORA-00918

我如何通过休眠条件编写正确的查询以按 oracle RowId 列排序?

4

1 回答 1

2

Hibernate 认为 rowid 是一个 oracle 函数,但它是一个列标识符。要说休眠,rowid 是列名,我们需要将休眠映射编写为

<property name="rowId" column="`ROWID`" insert="false" update="false"/>
于 2013-04-21T12:49:21.260 回答