java从Spring Data MongoDB中的嵌入文档获取对父文档的引用
我想从嵌入对象访问父对象,但找不到方法。我将在这里举例说明这意味着什么:
我有两个Java类,如下所示:
@Document
public class Parent {
private String name;
private List<Child> children;
@PersistenceConstructor
public Parent (String name, List<Child> children) {
this.name = name;
this.children = children;
}
...
@Document
public class Child {
private String name;
private Parent parent;
@PersistenceConstructor
public Child(String name, Parent parent) {
this.name = name;
this.parent = parent;
}
...
我在MongoDB中的文档如下所示:
{
"name": "some name",
"children" : {
"name": "name1"
},
{
"name" : "name2"
}
}
是否有可能获得对父类的引用,例如在子类的构造函数中?似乎子类中@PersistenceConstructor注释构造函数中的所有参数都必须来自子数组,这意味着名为parent的参数为null:(
我知道,如果我创建自己的转换器实现,我可以反序列化父级和子级,并将父级引用设置为子级,但我的实际文档相当大,必须自己编写反序列化代码将是大量的锅炉板代码
# 1 楼答案
您可以手动设置父引用:
儿童:
@Transient注释告诉spring数据在保存对象时忽略该字段
然后在父项中:
使用一些聪明的接口和助手类或继承,重复代码的数量将是最小的