微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

嵌套文档中反映的Spring数据Mongo Audit字段

如何解决嵌套文档中反映的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 举报,一经查实,本站将立刻删除。