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

java – Spring Data MongoDB审计不适用于嵌入式文档

我正在尝试使用Spring Data MongoDB @LastModifiedDate注释来引入审计.它适用于顶级文档,但我遇到了嵌入对象的问题.

例如:

@Document(collection = "parent")
class ParentDocument {

    @Id
    String id;        

    @LastModifiedDate
    DateTime updated;

    List<ChildDocument> children;  

}

@Document
class ChildDocument {

    @Id
    String id;        

    @LastModifiedDate
    DateTime updated;

}

认情况下,当我使用内部子项列表保存parentDocument实例时,仅为parentDocument设置更新的值,但不为子项列表中的任何对象设置更新的值.但在这种情况下,我也想审核它们.有可能以某种方式解决这个问题吗?

解决方法:

我决定使用自定义ApplicationListener来解决

public class CustomAuditingEventListener implements 
        ApplicationListener<BeforeConvertEvent<Object>> {

    @Override
    public void onApplicationEvent(BeforeConvertEvent<Object> event) {
        Object source = event.getSource();
        if (source instanceof ParentDocument) {
            DateTime currentTime = DateTime.Now();
            ParentDocument parent = (ParentDocument) source;
            parent.getChildren().forEach(item -> item.setUpdated(currentTime));
        }
    }
}

然后将相应的bean添加到应用程序上下文中

<bean id="customAuditingEventListener" class="app.CustomAuditingEventListener"/>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐