如何使用HQL返回rownum列值?(使用oracle数据库)
我有一个复杂的HQL查询 我想访问Oracle特定的rownum列值,作为返回结果的一部分。如何编写查询(和/或更改hbm.xml)以支持此功能 到目前为止,我尝试的方法不起作用: 修改我的hbm.xml如何使用HQL返回rownum列值?(使用oracle数据库),oracle,hibernate,oracle10g,hql,Oracle,Hibernate,Oracle10g,Hql,我有一个复杂的HQL查询 我想访问Oracle特定的rownum列值,作为返回结果的一部分。如何编写查询(和/或更改hbm.xml)以支持此功能 到目前为止,我尝试的方法不起作用: 修改我的hbm.xml <property name="rownum" type="int" update="false" insert="false" generated="never"/> 但是我得到了java.sql.SQLException:ORA-01747:无效的user.table.col
<property name="rownum" type="int" update="false" insert="false" generated="never"/>
但是我得到了java.sql.SQLException:ORA-01747:无效的user.table.column、table.column或column规范
我怀疑我可能需要在复杂的hql查询中混合一些sql。。。欢迎提出建议。谢谢
一些背景:
- hibernate使用oracle的rownum“在引擎盖下”对结果进行分页
- 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
如果确实希望在映射中执行此操作,可以尝试将其定义为公式而不是列。如果Hibernate不将表名识别为列,则它可能不会预先挂起该表名。对于这种语句,Hibernate在java中会返回什么?名单?@小姐,对不起,我不知道
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