繁体   English   中英

条件休眠拦截器

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM