2016-10-12 5 views
0

にオプションのフィールドの結果を取得しますは、私は春とJavaの初心者です、私は以下のように照会したいシナリオを、持っている春のJPAクエリ

帳票サービス:以下のように検索

prescriptionOrderRepository.searchPharmacyOrders(args); 

私はこのような私の春のクエリを書いています:

@Query(value = "select po from PrescriptionOrder po WHERE po.pharmacyId = :pharmacyId " 
      + "AND po.id = :idValue AND po.active = :active ORDER BY po.createdAt DESC") 
    Page<PrescriptionOrder> searchPharmacyOrders(@Param("pharmacyId") Long pharmacyId, 
      @Param("idValue") Long idValue, Pageable pageRequest, @Param("active") Boolean active); 

私は、po.idがオプションフィールドであることを要求しなければならないとすれば、どのようにそのためのクエリを書くことができます。

答えて

1

私はいつもparamsを期待していますが、デフォルトではnullか、値を取得して一致する必要があります。したがって、パラメータの場合:クエリのidValueは

... AND (po.id = :idValue OR :idValue is null) ... 

です。あなたはGET変数を使ってControllerクラスから来ています、あなたはいつもそれらをデフォルトのnullとして使うことができます。あるいは値を取得していて、それは一致しなければなりません。あなたの例では

、合計でそのクエリ...

WHERE (po.pharmacyId = :pharmacyId AND po.id = :idValue AND po.active = :active 

変更へ:

WHERE ((po.pharmacyId = :pharmacyId OR :pharmacyId is null) AND (po.id = :idValue OR :idValue is null) AND (po.active = :active OR :active is null) 
関連する問題