如何用HQL返回rownum列值? (使用oracle db)

时间:2009-02-10 17:38:03

标签: oracle hibernate oracle10g hql

我有一个复杂的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查询混合...建议欢迎。感谢。


一些背景知识:

2 个答案:

答案 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可能不会预先挂起表名。