Java SpringDataMongoDB在重新水化对象时如何处理构造函数?
我已经阅读了以下基本spring数据mongodb对象映射问题,但找不到答案: 如果我从MongoDB加载以下类的实例:Java SpringDataMongoDB在重新水化对象时如何处理构造函数?,java,spring,mongodb,spring-data,spring-data-mongodb,Java,Spring,Mongodb,Spring Data,Spring Data Mongodb,我已经阅读了以下基本spring数据mongodb对象映射问题,但找不到答案: 如果我从MongoDB加载以下类的实例: public class Test { private String str1; private String str2; private Date date3; public Test(String str1) { this.str1 = str1; this.date3=new Date(); }
public class Test {
private String str1;
private String str2;
private Date date3;
public Test(String str1) {
this.str1 = str1;
this.date3=new Date();
}
}
我知道构造函数Test(字符串str1)
将使用MongoDB文档的顶级字段str1
中的值进行调用。
我假设这个构造函数相当于显式声明一个@PersistenceConstructor
但是在这种情况下,str2和date3字段会发生什么变化?是否所有不属于构造函数的字段仍将被初始化,或者自找到仅使用str1的PeristenceConstructor后,str2,date3
值是否将丢失
最后,这将以什么顺序发生?
date3
是否由构造函数设置,然后被先前保存的字段覆盖,或者反之亦然?填充过程是双重的,在某种程度上是正交的。大多数情况下,您已经说明了正确的行为。调用构造函数以创建对象实例。参数值是从DBObject
读取中检索的,如果将复杂对象交给构造函数,需要从嵌套的DBObject
中解组,则可能会导致递归创建对象
下一步是填充持久字段。您的案例与使用默认构造函数的案例的唯一区别在于,我们记住了您交给构造函数的字段值,并且不会重新填充这些字段值
如果对象具体化的源文档包含
date
值,则示例中的date
属性在构造函数中初始化后仍将被设置。谢谢Oliver!这在SpringDataMongoDB文档中值得一提。我现在有足够的声誉来修改它。再次感谢。