gpt4 book ai didi

mysql - @Query 使用 or, and

转载 作者:行者123 更新时间:2023-11-29 13:39:02 25 4
gpt4 key购买 nike

在我的数据库中,我有两种类型的用户:测试和生产。我有通过 ID 或订单号搜索它们的方法。在数据库中是带有 bool 参数 isTest 的列(如果用户来自测试环境则为 true,否则为 false)。我必须使用免费参数(id、oorderId 和 isTest)在存储库(spring data、jpa)中进行查询,并且我想仅显示生产用户。我做了一些这样的事情(但不起作用,我的意思是通过 orderId 或 id 进行搜索可以,但 bool 属性不行):

public interface UserRepository extends JpaRepository<User, Long>{

@Query(select u from User where u.orderId = ?1 or u.id = ?1 and isTest = false")
Page<User> searchUsers(Pageable pageable, String orderId, String id, boolean isTest);

}感谢您的帮助

最佳答案

Operator Precedence 下所述, AND 的优先级高于 OR。因此,您当前的过滤器评估为:

WHERE u.orderId = ?1 OR (u.id = ?1 AND isTest = false)

您应该添加显式括号以强制满足您要求的优先级:

WHERE (u.orderId = ?1 OR u.id = ?1) AND isTest = false

关于mysql - @Query 使用 or, and,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18363569/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com