如何解决嵌套文档中反映的Spring数据Mongo Audit字段
在保存带有嵌套审核文档的审核(@ CreatedDate,@ LastModifiedDate)文档时,这两个日期也将反映在嵌套文档中。
这是场景:
DocumentA.java
public class DocumentA {
@Id
private String id;
@Version
private Long version;
@CreatedDate
private Long createdDate;
@LastModifiedDate
private Long lastModifiedDate;
// getters and setters
}
DocumentB.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
}
DocumentA已存储在具有createdDate和lastModifiedDate设置的db中。然后,当使用嵌套DocumentA保存新DocumentB时,嵌套DocumentA的2个日期将被修改为刚为DocumentB设置的相同值。这仅在嵌套文档中发生,而未触及存储的DocumentA(幸运的是!)。 预期的行为是,嵌套文档将仅通过代码设置完全相同(这意味着与原始文档A相同)
解决方法
这就像设计一样工作。
嵌入文档A与引用文档A不同。将文档作为主文档的一部分进行管理意味着将跟踪所有更改,因为它们是文档B中的顶级字段。对引用的文档进行跟踪和管理
如果仅引用,则应该使用手动引用,并使用单独的调用或使用$ lookup聚合查询进行加载。其他选择是使用dbref使驱动程序在加载主文档时加载引用的文档。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。