这是我的HQL:
Query query = createqueryOnCurrentSession("DELETE Email e " + "where " + "(status = :sent and creationTime <= :creation)" + "or " + "(status = :error and maxEttempts >= :maxEttempts)");
这是生成的sql:
delete from `email` where `status`=? and `creation_time`<=? or `status`=? and `attempts`>=?
问题:为什么括号不在sql中?
我希望它是:
delete from `email` where (`status`=? and `creation_time`<=?) or (`status`=? and `attempts`>=?)
也许我会在2个请求中删除?
delete from `email` where `status`=? and `creation_time`<=? delete from `email` where `status`=? and `attempts`>=?
解决方法
这实际上是一个功能.
由于和优先于或,hibernate知道它,并删除括号.
你不需要那些括号.