Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SpringDataMongoDB在重新水化对象时如何处理构造函数?_Java_Spring_Mongodb_Spring Data_Spring Data Mongodb - Fatal编程技术网

Java SpringDataMongoDB在重新水化对象时如何处理构造函数?

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(); }

我已经阅读了以下基本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();
    }
}
我知道构造函数
Test(字符串str1)
将使用MongoDB文档的顶级字段
str1
中的值进行调用。 我假设这个构造函数相当于显式声明一个
@PersistenceConstructor

但是在这种情况下,str2和date3字段会发生什么变化?是否所有不属于构造函数的字段仍将被初始化,或者自找到仅使用str1的PeristenceConstructor后,
str2,date3
值是否将丢失


最后,这将以什么顺序发生?
date3
是否由构造函数设置,然后被先前保存的字段覆盖,或者反之亦然?

填充过程是双重的,在某种程度上是正交的。大多数情况下,您已经说明了正确的行为。调用构造函数以创建对象实例。参数值是从
DBObject
读取中检索的,如果将复杂对象交给构造函数,需要从嵌套的
DBObject
中解组,则可能会导致递归创建对象

下一步是填充持久字段。您的案例与使用默认构造函数的案例的唯一区别在于,我们记住了您交给构造函数的字段值,并且不会重新填充这些字段值


如果对象具体化的源文档包含
date

值,则示例中的
date
属性在构造函数中初始化后仍将被设置。谢谢Oliver!这在SpringDataMongoDB文档中值得一提。我现在有足够的声誉来修改它。再次感谢。