我正在尝试使用Spring Data MongoDB @LastModifiedDate注释来引入审计.它适用于顶级文档,但我遇到了嵌入对象的问题.例如:@Document(collection = parent)class ParentDocument {@IdString id; @LastModi...
我正在尝试使用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"/>
沃梦达教程
本文标题为:java – Spring Data MongoDB审计不适用于嵌入式文档
基础教程推荐
猜你喜欢
- JavaMail实现邮件发送机制 2023-04-12
- 关于maven使用过程中无法导入依赖的一些总结 2023-04-17
- 解决lombok 父类和子类builder不兼容的问题 2023-05-24
- guava中Multimap、HashMultimap用法小结 2022-11-11
- Java 集合框架 Queue 和 Stack 体系 2023-01-09
- 图解Java经典算法归并排序的原理与实现 2023-05-14
- 使用SpringBoot配置虚拟化路径用于图片的展示 2023-01-02
- java实现时钟表盘 2023-05-14
- Java实现手写乞丐版线程池的示例代码 2023-06-17
- Java实现字符串转为驼峰格式的方法详解 2023-02-19