Вопрос

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