我有一个休眠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控制这种行为,但是拦截器会盲目地发射
有人知道能够根据调用方法触发拦截器吗?
答案 0 :(得分:0)
我最终创建了一个Abstract
类和Interface
以支持设置所需的'isEditable'方法。
然后,我编写了一个自定义批注,在AspectJ中使用该批注来捕获所需的所有执行代码。在切入点中,我更新了实体,并设置了“ isEditable”方法。
现在,当我的拦截器被触发时,我会进行快速检查以查看该实体是否可编辑,否则,我不会将更改保存到历史表中。