我在Spring Data Mongodb中使用QueryDSL谓词 . 但是,我面临的情况是我必须使用MongoTemplate查询API(例如过滤从Mongo获取的字段) . 这是一个简单的例子:
public Stream<MyModel> findSummary(Predicate predicate){
Query query = new Query();
query.fields.include("field1").include("field2");
return mongoTemplate.stream(query, MyModel.class);
}
我想将我的谓词转换为标准,以便我可以做类似的事情:
Query query = new Query();
query.addCriteria(XXXXX.toCriteria(predicate));
但是我找不到这样的实用类 .
我发现可以访问QueryDSL谓词,因此我开始实现自定义访问者(com.mysema.query.types.Visitor),但Criteria API并不是为此目的而设计的:例如实现简单的“和”运算符QueryDSL(com.mysema.query.types.Ops#AND)必须变成类似的东西
<result of left argument visit assumed to be a Criteria>.and("<path of right argument>").<operator of right argument>(<result of right argument visit>);
有人可以提出一种方法来使QueryDSL Predicates和Spring Data Mongodb Query互操作吗?
谢谢
伯努瓦