我正在尝试编写适用于Sybase和Derby数据库的HQL
查询。以下是查询的伪代码:
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中做到这一点。
答案 0 :(得分:-1)
我正在尝试编写适用于Sybase和Sybase的HQL查询 德比数据库
您不编写符合任何特定数据库平台要求的HQL。 HQL是一个抽象,它引用映射对象图中的属性和类。
Hibernate将使用您提供的映射和配置的方言来生成符合底层数据库平台的SQL。