s1m*_*r3d 5 java audit spring-data spring-data-mongodb spring-repositories
当保存带有嵌套审核文档的审核(@CreatedDate、@LastModifiedDate)文档时,这两个日期也将反映在嵌套文档中。
这是场景:
文件A.java
public class DocumentA {
@Id
private String id;
@Version
private Long version;
@CreatedDate
private Long createdDate;
@LastModifiedDate
private Long lastModifiedDate;
// getters and setters
}
Run Code Online (Sandbox Code Playgroud)
文件B.java
public class DocumentB {
@Id
private String id;
@Version
private Long version;
@CreatedDate
private Long createdDate;
@LastModifiedDate
private Long lastModifiedDate;
private DocumentA docA;
// getters and setters
}
Run Code Online (Sandbox Code Playgroud)
DocumentA 已存储在数据库中,并设置了其createdDate 和lastModifiedDate。然后,当保存带有嵌套 DocumentA 的新 DocumentB 时,嵌套 DocumentA 的 2 个日期将被修改为刚刚为 DocumentB 设置的相同值。这种情况仅发生在嵌套文档中,而存储的 DocumentA 不会被触及(幸运的是!)。预期的行为是嵌套文档将保持与通过代码设置的完全相同(这意味着与原始文档A相同)
这就像设计一样工作。
嵌入文档 A 与引用文档 A 不同。嵌入文档作为主文档的一部分进行管理,意味着所有更改都会被跟踪,因为它们是文档 B 中的顶级字段。引用文档会单独跟踪和管理。
如果您只是引用,则应该使用手动引用并使用单独的调用或使用 $lookup 聚合查询进行加载。另一种选择是使用 dbref 让驱动程序在加载主文档时加载引用的文档。
| 归档时间: |
|
| 查看次数: |
808 次 |
| 最近记录: |