[英]Conditional Hibernate Interceptor
我有一个Hibernate Interceptor
,它可以持久保存实体的属性更改并且可以正常工作。 我希望更新其当前逻辑,并且仅在从特定方法触发它时才进行拦截,而不仅仅是在Hibernate将其视为“肮脏”时拦截。
我正在寻求实现相当于:
@Override
public boolean onFlushDirty(Object entity, Serializableid, Object[] currentState, Object[] previousState, String[] propertyNames, Type[] types){
String callingMethod = // determined somehow...
if(callingMethod == MyService.updatePerson) {
// Only persist changes when calling method is updatePerson
}
return false
}
我到处都围绕SO和Web进行搜索,但是我找不到关于该主题的任何内容。
我已经研究过使用AOP控制这种行为,但是拦截器会盲目地触发
有谁知道能够基于调用方法触发拦截器?
我最终创建了一个Abstract
类和Interface
以支持设置所需的“ isEditable”方法。
然后,我编写了一个自定义批注,在AspectJ中使用该批注来捕获所需的所有执行代码。 在切入点中,我更新了实体,并设置了“ isEditable”方法。
现在,当我的拦截器启动时,我会进行快速检查以查看该实体是否可编辑,否则,我不会将更改持久保存到历史表中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.