Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在WHERE条件下休眠createQuery remove()_Java_Hibernate - Fatal编程技术网

Java 在WHERE条件下休眠createQuery remove()

Java 在WHERE条件下休眠createQuery remove(),java,hibernate,Java,Hibernate,假设我有一个人 当我尝试与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 当我在hibe

假设我有一个人

当我尝试与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中打开调试sql输出时,它会生成

where person0_.`name`=? or person0_.`id`=? and person0_.`active`=?
因为我把()放在where条件中,所以输出应该是

where person0_.`name`=? or (person0_.`id`=? and person0_.`active`=?)
为什么要删除where条件中的()?还是我错过了什么


感谢您,它的优先级高于SQL中的或,因此这两条语句是等效的。Hibernate删除不必要的括号

如果您在name=?周围添加两个括号/副词,这样您将得到:FROM Person WHERE(name=?)或(id=?和active=?)是否有帮助。不过,这只是一个胡乱猜测……我认为这是不同的意思。示例:我只想获取(用户名为“admin”的人)或(id=10且活动的人=1)。在这种情况下,允许有两个人。等等,我想你是对的。。。当我尝试另一个sql分组时,hibernate不会删除括号。