Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
hibernate HQL从子查询QuerySyntaxException中减去_Hibernate_Exception_Subquery_Hql - Fatal编程技术网

hibernate HQL从子查询QuerySyntaxException中减去

hibernate HQL从子查询QuerySyntaxException中减去,hibernate,exception,subquery,hql,Hibernate,Exception,Subquery,Hql,我正在尝试编写这个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:意外的AST节点

我正在尝试编写这个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:意外的AST节点,但如果我以SQL形式执行查询,则会成功。我把范围缩小到不喜欢从子查询的结果中减去一个值,但我在谷歌上找不到任何解释如何解决这个问题的东西

有人知道我做错了什么吗?现在,我只想把它作为SQL来继续,但我的好奇心真的想知道如何在HQL中实现它

我正在尝试编写这个HQL查询,它将同时适用于Sybase和 德比数据库

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


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

不知道为什么会被降票,通过升票重新归零!可能是一个虚假的点击,因为不可否认我们为什么使用HQL。虽然您的答案提供了信息,但它并没有回答所问的最终问题。这就是你的答案被降级的原因。最初的问题是:当子查询使用SQL时,为什么不能从使用HQL的子查询的结果中减去常量值?那么,做我想做的事情的正确方法是什么?