0

我正在尝试编写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 中做到这一点。

4

1 回答 1

-1

我正在尝试编写适用于 Sybase 和 Derby 数据库的 HQL 查询

您不会编写符合任何特定数据库平台要求的 HQL。HQL 是一种抽象,它引用映射对象图中的属性和类。

Hibernate 将使用您提供的映射和配置的方言负责生成符合底层数据库平台的 SQL。

于 2012-08-21T16:14:00.797 回答