我有一个复杂的HQL查询。
我想在返回的结果中访问Oracle特定的 rownum 列值。如何编写查询(和/或更改我的hbm.xml)以支持此操作?
到目前为止我尝试过的东西不起作用:
修改我的hbm.xml
<property name="rownum" type="int" update="false" insert="false" generated="never"/>
和查询如:
"select dog.rownum from Dog as dog where ..."
但我得到 java.sql.SQLException:ORA-01747:user.table.column,table.column或列规范无效
我怀疑我可能需要将一些sql与我复杂的hql查询混合...建议欢迎。感谢。
一些背景知识:
答案 0 :(得分:2)
ROWNUM不属于任何表格,因此您的查询应为:
"select rownum from Dog as dog where ..."
例如:
SQL> select emp.ename, rownum from emp;
ENAME ROWNUM
---------- ----------
SMITH 1
ALLEN 2
WARD 3
JONES 4
MARTIN 5
BLAKE 6
CLARK 7
SCOTT 8
KING 9
TURNER 10
答案 1 :(得分:0)
如果您确实想在映射中执行此操作,可以尝试将其定义为公式而不是列。如果表名不能将其识别为列,则Hibernate可能不会预先挂起表名。