@LastModifiedBy和@LastModifiedDate对嵌入式对象不起作用

时间:2020-01-27 11:53:21

标签: java mongodb spring-boot

我正在尝试使用 @LastModifiedDate @LastModifiedBy 批注来审核我在MongoDB中的记录。

这里是我的模特

    @Document(collection = "A")
    class A{
    @LastModifiedBy
    private String lastModifiedUser;
    @LastModifiedDate
    private Instant lastModifiedDate;
    private List<B> listB;
    }

    class B{
    @LastModifiedBy
    private String lastModifiedUser;
    @LastModifiedDate
    private Instant lastModifiedDate;
    }

Service1.class
public class Service1 {
 public void saveA(A a) {
      repository.save(a)
      }
 }

对于 class A 来说工作正常,但不适用于嵌入式 class B

任何帮助将不胜感激。

使用2.1.10- Spring Data Mongo and for Springboot 2.1.8.Release

1 个答案:

答案 0 :(得分:1)

您的帖子中没有太多内容可以了解最终目标的解决方案...因此,我将尽力而为:)

在撰写本文的当天,如here所述,spring在嵌入文档审核方面存在一个已知问题,因此您必须使用自己的设置逻辑覆盖audit接口并更改lastModifiedUserlastModifiedDate字段,这是可行的,但并非如此容易,并且可能会在项目中spring-data的功能中引入不良行为

您可以通过自定义方法强制B进行所有更改,因此List<B>的每次修改都会触发“更改检查”(不涉及任何spring-data功能)

(我的建议)是另一种方法

使用B作为单独的文档,并使用A

将b的引用列表存储在@DBRef中。