2009-02-10 111 views
2

我有一个复杂的HQL查询。如何用HQL返回rownum列值? (使用oracle数据库)

我想访问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

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 
+0

对于这样的声明什么会休眠在java中返回?一个名单<地图>? – riroo 2017-02-27 14:33:30

0

如果你真的想这样做的映射,可能会尝试将其定义为公式而不是列。如果表名不能识别为列,Hibernate可能不会预先设置表名。