以下是我的HQL查询。
delete from Table t
where
(t.column1=:value1 and t.column2=:value2)
or (t.column3=:value3 and t.column4=:value4)
当我运行此查询时,它会生成以下错误的SQL。
delete from Table t
where
t.column1=?
and t.column2=?
or t.column3=?
and t.column4=?
在生成的SQL中删除括号,这会给我错误的结果。
请帮忙。
答案 0 :(得分:0)
这不是一个结构化的解决方案,而只是为了使事情有效。你能不能试试这个
delete from Table t
where
1=1 AND (t.column1=:value1 and t.column2=:value2)
or (t.column3=:value3 and t.column4=:value4)
我已经在momenet上安装了hibernate,但我相信一旦这个问题出现在我身上,我就这样解决了(我猜是这样)
经过这些链接后,我发现(这可能是错误的)Hibernate正在完美地翻译这些查询。 “AND”具有更高的优先级,因此查询的结果根本不应该实现......可能还有其他原因