HQL查询的问题

时间:2011-11-03 06:04:47

标签: hibernate hql

以下是我的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中删除括号,这会给我错误的结果。

请帮忙。

1 个答案:

答案 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,但我相信一旦这个问题出现在我身上,我就这样解决了(我猜是这样)

NHibernate HQL logic problem

https://hibernate.onjira.com/browse/HHH-550

经过这些链接后,我发现(这可能是错误的)Hibernate正在完美地翻译这些查询。 “AND”具有更高的优先级,因此查询的结果根本不应该实现......可能还有其他原因