0

私のデータベースには、テストと本番の 2 種類のユーザーがいます。IDまたは注文番号で検索する方法があります。データベースには、ブール値パラメーター 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

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
于 2013-08-21T17:13:37.080 に答える