2
私はAggregation
とCriteria
を使用して動的MongoDBクエリを作成しています。Spring MongoDB:Criteriaメソッド非静的アクセス
Aggregation aggregation;
AggregationResults<DataContentResult> result;
List<DataContentResult> theResult;
try {
aggregation = Aggregation.newAggregation(
buildMatchCriteriaForAggregation(publisherId, filter)
, buildGroupOperationForAggregation());
result = mongoTemplate.aggregate(aggregation, DataContent.class, DataContentResult.class);
theResult = result.getMappedResults();
} catch (Exception e) {
e.printStackTrace();
}
@SuppressWarnings("static-access")
private AggregationOperation buildMatchCriteriaForAggregation(Integer publisherId, Filter filterCriteria){
Criteria criteria = new Criteria();
criteria.where("publisherId").is(publisherId);
if (filterCriteria.getTa() != null) criteria.where("type").is(filterCriteria.getTa());
if (filterCriteria.getPlz() != null) criteria.where("zip").is(ilterCriteria.getPlz());
if (filterCriteria.getTbVerlag() != null) criteria.where("tbVerlagNr").is(filterCriteria.getTbVerlag());
return Aggregation.match(criteria);
}
は今、私は私がCriteria.where("something").is("something")
のような静的な方法でCriteria
メソッドにアクセスすることになっていますことを知っています。しかし、私の場合、私は可用性に応じて自分のFilter
基準を指定する必要があります。それで私は上記のようにしなければなりません。これは動作していないし、何らかの理由でcriteria
オブジェクトが毎回空になります。
この場合、どのような代替方法をお勧めしますか?それとも私は何か間違っているのですか?