假设我有实体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
当我在hibernate中打开debug sql输出时,它会产生
where person0_.`name`=? or person0_.`id`=? and person0_.`active`=?
因为我把()放在where条件里面,输出应该是
where person0_.`name`=? or (person0_.`id`=? and person0_.`active`=?)
为什么删除条件中的()?还是我错过了什么?
由于
答案 0 :(得分:2)
AND的优先级高于SQL中的OR,因此这两个语句是等效的。 Hibernate删除了不必要的括号。