0

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

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);

} 感谢帮助

4

1 回答 1

1

运算符优先级中所述,AND优先级高于OR. 因此,您当前的过滤器被评估为:

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

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

WHERE (u.orderId = ?1 OR u.id = ?1) AND isTest = false
于 2013-08-21T17:13:37.080 回答