问题描述
我们使用的是 spring-boot 2.2.1 和 query-dsl-mongoDB 4.2.1。
我们正在使用 spring-data.mongodb findAll 方法 tp 从书籍收藏中查找书籍使用
各种谓词,如 bookUid、authorId、customerId、status、isbn 和 provisioningId。
我可以构造除 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"));
我尝试构建以下谓词 bookInfo 是否与 bey 键和值匹配
Map
但不幸的是它不起作用并抛出异常,然后尝试以下表达式
PathBuilder entityPath = new PathBuilder(Book.class,"书信息"); predicates.add(entityPath.getMap("map",String.class,String.class).get(key).eq(value));
但它总是返回一个空集合,即使我们有匹配的 isbn
或 provisioningId
。
我正在查看文档,但也找不到任何帮助。
任何帮助都会非常可观。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)