小编Ben*_*lon的帖子

Spring数据Mongodb:QueryDsl Predicate和Criteria API的互操作性

我在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);
}
Run Code Online (Sandbox Code Playgroud)

我想将我的谓词转换为标准,以便我可以做类似的事情:

Query query = new Query();
query.addCriteria(XXXXX.toCriteria(predicate));
Run Code Online (Sandbox Code Playgroud)

但是我找不到这样的实用类.

我发现可以访问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>);
Run Code Online (Sandbox Code Playgroud)

有人可以提出一种方法来使QueryDSL Predicates和Spring Data Mongodb Query互操作吗?

谢谢

伯努瓦

querydsl spring-data-mongodb

13
推荐指数
1
解决办法
901
查看次数

标签 统计

querydsl ×1

spring-data-mongodb ×1