【发布时间】:2016-05-03 05:55:53
【问题描述】:
我的项目使用 Hibernate 版本 4.0.1.Final 和 JPA 2.0。我需要更改一个 HQL - 添加顺序,看起来很简单,只是它现在以 SQL 语法错误结尾。
我已经定义了这个 HQL 命名查询:
SELECT s FROM Entity s WHERE s.status = :status ORDER BY s.priority, s.startDate
-> 粗体是我要添加的部分。
现在,由于这个命名查询是使用锁执行的 - LockModeType.PESSIMISTIC_WRITE 它为 Oracle 的更新选择创建:
select *
from (select entity.field
...more fields...
from DB_TABLE entity
where (entity.STATUS = ?)
order by entity.PRIORITY, entity.DISTRIB_START_DATE)
where rownum <= ?
for update
这个查询以
结尾java.sql.SQLSyntaxErrorException: ORA-02014 无法从具有 DISTINCT、GROUP BY 的视图中选择 FOR UPDATE
没有订单部分它工作正常。
有什么办法可以解决这个问题吗?我只需要按顺序选择这些记录。也不能在应用程序中订购它们,因为它只选择表的一部分。
我尝试将 Hibernate 更新到 4.2.21.Final 但结果是一样的。 Hibernate 4.3+ 需要我不使用的 JPA2.1。
也许这是 Hibernate 的错误?
【问题讨论】: