【问题标题】:how to return rownum column value with HQL? (using oracle db)如何使用 HQL 返回 rownum 列值? (使用 Oracle 数据库)
【发布时间】:2010-10-06 17:03:45
【问题描述】:

我有一个复杂的 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: invalid user.table.column, table.column, or column specification

我怀疑我可能需要将一些 sql 与我的复杂 hql 查询混合使用...欢迎提出建议。谢谢。


一些背景:

【问题讨论】:

    标签: oracle hibernate oracle10g hql


    【解决方案1】:

    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
    

    【讨论】:

    • 对于这样的声明,java 中的 hibernate 会返回什么?一个列表> ?
    • @miss_R 抱歉我不知道
    【解决方案2】:

    如果您真的想在映射中执行此操作,您可以尝试将其定义为公式而不是列。如果 Hibernate 无法将表名识别为列,则它可能不会在表名之前添加它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-12-14
      • 1970-01-01
      • 2013-02-12
      • 1970-01-01
      • 1970-01-01
      • 2017-12-06
      相关资源
      最近更新 更多