我正在尝试编写HQL
适用于 Sybase 和 Derby 数据库的查询。这是查询的伪代码:
from MY_TABLE as t
where (t.Val = :val)
and (t.Val2 >
( select max(tt.Val2)
from MY_TABLE as tt
where tt.Val = :val) - 2);
当我使用 hibernate 作为HQL
查询运行它时,它会失败,QuerySyntaxException: unexpected AST node
但如果我将查询作为 SQL 执行,它会成功。我已经把它缩小到不喜欢从子查询的结果中减去一个值,但我无法在谷歌上找到任何解释如何解决这个问题的东西。
有人知道我在做什么错吗?现在我只是将它作为 SQL 来继续前进,但我的好奇心真的很想知道如何在 HQL 中做到这一点。