如何解决如何使用带有未完全填充的嵌套字段的示例匹配器
我有以下结构:
@Document
class A {
String value1;
B b;
}
class B {
String value1;
String value2;
Integer value3;
}
然后我使用以下值保存文档:
{
value1: "val",b: {
value1: "val1",value2: "val2"
value3: 156
}
}
当我创建一个在 B 中填充两个值的示例时,我得到匹配,当我只填充 A.value1 和 B.value1 时,我没有得到匹配。如何使匹配在嵌套字段中不包含空值?
搜索:
repository.findAll(Example.of(new A("val",new B("val1",null,null)))
不匹配,因为某些 B 字段未填写。
搜索:
repository.findAll(Example.of(new A("val","val2",156)))
匹配所有字段。
解决方法
这应该通过定义您自己的 ExampleMatcher 来工作:
ExampleMatcher exampleMatcher = ExampleMatcher.matchingAll();
然后查询会是这样的:
repository.findAll(
Example.of(new A("val",new B("val1",null,null)),exampleMatcher));
见API docs:
创建一个新的 ExampleMatcher 包括所有非空属性,默认匹配从该示例派生的所有谓词。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。