【发布时间】:2011-05-31 05:32:34
【问题描述】:
假设我有实体 Person。
当我尝试与 hibernate createQuery 一起使用时,它会在 where 条件下删除 ()。示例:
Query query = session.createQuery("FROM Person WHERE name=? OR (id=? AND active=?)");
query.setParameter(1, "Test");
query.setParameter(2, 1);
query.setParameter(3, 1);
// and so on
当我在休眠中打开调试 sql 输出时,它会产生
where person0_.`name`=? or person0_.`id`=? and person0_.`active`=?
因为我把 () 放在 where 条件中,所以输出应该是
where person0_.`name`=? or (person0_.`id`=? and person0_.`active`=?)
为什么要删除 where 条件中的 ()?还是我错过了什么?
谢谢
【问题讨论】:
-
如果您在 name=? 周围添加几个括号/括号是否有帮助,这样您最终会得到: FROM Person WHERE (name=?) OR (id=? AND active= ?)。只是一个疯狂的猜测......