微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用带有未完全填充的嵌套字段的示例匹配器

如何解决如何使用带有未完全填充的嵌套字段的示例匹配器

我有以下结构:

@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 举报,一经查实,本站将立刻删除。