spring-data-mongodb在对象再水化时如何处理构造函数?

我已阅读http://static.springsource.org/spring-data/data-mongo/docs/1.1.0.RELEASE/reference/html/#mapping-chapter但无法找到以下基本弹簧数据的答案 – 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(String str1)将使用MongoDB文档的顶级字段str1中找到的值进行调用。 我假设这个构造函数相当于显式声明@PersistenceConstructor

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

最后,这会以什么顺序发生? date3是由构造函数设置的,然后被先前持久化的字段覆盖,反之亦然?

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

下一步是填充持久字段。 您的情况与使用默认构造函数的情况的唯一区别在于,我们记住您传递给构造函数的字段值,并且不会重新填充它们。

如果实现对象的源文档包含date的值,则示例中的date属性仍将在构造函数初始化后设置。