문제

I have ORACLE DB and 2 tables. I need select rows from table1 inner join table2 and order by ORACLE RowID column. To select I use criteria query. To add order by statement I use

criteria.addOrder(Order.asc("this.rowId"));

In mapping RowId look like

<property name="rowId" column="ROWID" insert="false" update="false"/>

But hibernate generate wrong sql query like

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 drop alias "this" from query. Because all tables in ORACLE has ROWID column, we have oracle error ORA-00918

How i can write correct query by hibernate criteria to order by oracle RowId column?

도움이 되었습니까?

해결책

Hibernate thinks that rowid is an oracle function, but it is a column identificator. To say hibernate that rowid is a column name we need to write hibernate mapping as

<property name="rowId" column="`ROWID`" insert="false" update="false"/>
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top