我有大量的实体。
对于每个实体,我都有一个扩展 CrudRepository
的接口(interface)。
每个实体都使用 *Repository.save(entity)
方法保存。
我想实现这样的记录器:
- 有一个独立的日志数据库,有两个表:log 和 logdata
log
表:- 创建
- 用户名
logdata
表:- 日志编号
- 字段名
- 值(字符串)
- 当
save
或delete
方法运行时,MyRepositoryTrigger 应该写入一条日志消息,其中所有字段的名称和字段值都已更改。
但是这样怎么写呢?
最佳答案
对于触发器功能,您必须查看您的数据库,但很可能它不能保证您的 CrudRepository
数据库 Activity 的排他性,因为它是在创建/删除/更新表/列时设置的。
相反,如果您想模仿触发器功能,这意味着无需每次都在 CrudRepository#save()/delete()
功能之前/之后进行设置,那么您会更好关闭使用 Spring AOP
功能
@After("execution(* my.CrudRepository.save(..))")
public void log(JoinPoint point) {
log.info(point.getSignature().getName() + " was called..");
}
你可以找到extensive Spring AOP programming documentation in the Spring Docs
关于java - 如何实现触发Spring-Data Repository的Before/After save方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26575593/