我们使用的是springboot2.2.1和querydslmongodb4.2.1。
我们使用的是spring-data.mongodb findall方法tp使用bookuid、authord、customerid、status、isbn和provisiongid等 predicate 从图书集中查找图书。我可以为所有属性构造 bookInfo
.
请查收样品供参考。
{
"_id" : ObjectId("6036323daa819c04005cff68"),
"bookUid" : "spring_boot",
"authorId" : "602bc44827e37ca2ba281f54",
"customerId" : "75e1c48e",
"status" : "ACTIVE",
"name" : "Spring boot",
"statusTimestamp" : ISODate("2021-02-24T11:07:28.000Z"),
"deleted" : false,
"bookInfo" : {
"isbn" : "240220211202",
"provisioningId" : "240220211202"
},
"customInfo" : {},
"version" : 1,
"countryCode" : "CZ",
"_class" : "book-collection"
}
这是java类,
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class Book {
@Id
private String id;
@Indexed
@WhiteSpaceTrim
private String bookUid;
private String authorId;
private String customerId;
private String status;
private String name;
private Date statusTimestamp;
private boolean deleted;
@WhiteSpaceTrim
private Map<String, String> provisionInfo;
private SmartObject customInfo;
private int version;
private String countryCode;
}
在查询dsl自动生成的类时,我看到bookinfo的类型是 QMap
public final ext.java.util.qmap provisioninfo=new ext.java.util.qmap(forproperty(“bookinfo”);
我试图构造下面的 predicate bookinfo是否匹配bey键和值
map<string,string>expre=new hashmap<>();表达式put(key,value);predicates.add(qbook.book.provisioninfo.in(expre.istrue());
但运气不好,它不工作,抛出异常,然后尝试以下表达式
pathbuilder entitypath=new pathbuilder<>(book.class,“bookinfo”);add(entitypath.getmap(“map”,string.class,string.class).get(key).eq(value));
但它总是返回一个空集合,即使我们有匹配的 isbn
或者 provisioningId
.
我在查文件,但也找不到任何帮助。
任何帮助都是值得赞赏的。
暂无答案!
目前还没有任何答案,快来回答吧!