gpt4 book ai didi

java - @LastModifiedBy 和 @LastModifiedDate 不适用于嵌入对象

转载 作者:行者123 更新时间:2023-12-02 09:04:25 25 4
gpt4 key购买 nike

我正在尝试使用 @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)
}
}

它对于A类工作正常,但不适用于嵌入式B类

任何帮助将不胜感激。

使用2.1.10- Spring Data Mongo 和 Springboot 2.1.8.Release

最佳答案

您的帖子中没有太多内容可以让您了解您想要的最终解决方案的行为......所以我会尽力:)

在撰写本文时,Spring 在嵌入文档审核方面存在一个已知问题 here ,所以你必须覆盖 audit与您自己的逻辑接口(interface)来设置和更改 lastModifiedUserlastModifiedDate字段,这是可能的,但并不那么容易,并且可能会给 spring-data 的功能带来不希望的行为。在你的项目中

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

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

使用B作为单独的文档,并存储在A中b 的引用列表使用 @DBRef

关于java - @LastModifiedBy 和 @LastModifiedDate 不适用于嵌入对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59930651/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com