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

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

我们使用的是springboot2.2.1和querydslmongodb4.2.1。
我们使用的是spring-data.mongodb findall方法tp使用bookuid、authord、customerid、status、isbn和provisiongid等 predicate 从图书集中查找图书。我可以为所有属性构造 bookInfo .
请查收样品供参考。

  1. {
  2. "_id" : ObjectId("6036323daa819c04005cff68"),
  3. "bookUid" : "spring_boot",
  4. "authorId" : "602bc44827e37ca2ba281f54",
  5. "customerId" : "75e1c48e",
  6. "status" : "ACTIVE",
  7. "name" : "Spring boot",
  8. "statusTimestamp" : ISODate("2021-02-24T11:07:28.000Z"),
  9. "deleted" : false,
  10. "bookInfo" : {
  11. "isbn" : "240220211202",
  12. "provisioningId" : "240220211202"
  13. },
  14. "customInfo" : {},
  15. "version" : 1,
  16. "countryCode" : "CZ",
  17. "_class" : "book-collection"
  18. }

这是java类,

  1. @Data
  2. @Builder
  3. @NoArgsConstructor
  4. @AllArgsConstructor
  5. public class Book {
  6. @Id
  7. private String id;
  8. @Indexed
  9. @WhiteSpaceTrim
  10. private String bookUid;
  11. private String authorId;
  12. private String customerId;
  13. private String status;
  14. private String name;
  15. private Date statusTimestamp;
  16. private boolean deleted;
  17. @WhiteSpaceTrim
  18. private Map<String, String> provisionInfo;
  19. private SmartObject customInfo;
  20. private int version;
  21. private String countryCode;
  22. }

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

暂无答案!

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

相关问题