2016-08-15 19 views
2

Springデータの条件に複数の 'and'条件を追加しようとしていますが、何が間違っているのかわかりません。私は私が間違って何をしていたかが分かったSpringデータの条件に複数のAND条件を追加するには

Criteria criteria = new Criteria(); 
     criteria.andOperator(Criteria.where("siteCode").is(siteCode)); 

     if(paymentMode != null) { 
      criteria.andOperator(Criteria.where("paymentMode").is(paymentMode)); 
     } 
     if(planCode != null) { 
      criteria.andOperator(Criteria.where("packageCode").is(planCode)); 
     } 
     if(status){ 
      criteria.andOperator(Criteria.where("expiryDateTime").gt(new Date())); 
     } else { 
      criteria.andOperator(Criteria.where("expiryDateTime").lte(new Date())); 
     } 

     Query query = new Query(criteria); 

     List<UserPackage> userPackageList = mongoTemplate.find(query, UserPackage.class); 
+0

どういう意味ですか?あなたはそこにいますか? –

+0

例:planCodeがnullでない場合は、 Criteria.where( "siteCode")。(siteCode).and( "planCode")is(planCode)のような条件に追加する必要があります。 –

+0

したがって、JavaでAND(&&)演算子が何であるかを知る必要があります。 –

答えて

3

: は、次のコードを参照してください。メソッド 'andOperator'と別のCriteriaを使用する必要はありません。

これは単純に 'and'メソッドを使用し、次に使用する次の演算子メソッドを連鎖させることで動作します。

私のような他の新人を助けるために働く解決策を共有する。

 Criteria criteria = new Criteria(); 
     criteria = criteria.and("siteCode").is(siteCode); 
     if (paymentMode != null) { 
      criteria = criteria.and("paymentMode").is(paymentMode); 
     } 
     if (planCode != null) { 
      criteria = criteria.and("packageCode").is(planCode); 
     } 
     if (status) { 
      criteria = criteria.and("expiryDateTime").gt(new Date()); 
     } else { 
      criteria = criteria.and("expiryDateTime").lte(new Date()); 
     } 
     Query query = new Query(criteria); 
+1

素晴らしい共有:) – davidxxx