如何在qmap spring data mongodb querydsl中查找元素

qzwqbdag  于 2021-07-13  发布在  Java
关注(0)|答案(0)|浏览(281)

我们使用的是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 .
我在查文件,但也找不到任何帮助。
任何帮助都是值得赞赏的。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题