java多次执行的函数_Interceptor 中onFlushDirty()函数执行多次的问题(Hibernate 的一个小Bug)...

最近在项目中遇到一个奇怪的问题,在使用Hibernate拦截器捕获实体变化并进行处理时,发现其中的onFlushDirty()函数执行了很多次,导致进行处理时产生很多重复数据。具体问题如下:

使用一个类继承Hibernate的EmptyInterceptor类来对程序中的实体变化进行拦截,并在其中的onFlushDirty()函数中对捕获的数据进行处理,产生对应的event数据并保存到数据库中。 例如:

public class EventInterceptor extends EmptyInterceptor {

public boolean onFlushDirty(

Object entity,

Serializable id,

Object[] currentState,

Object[] previousState,

String[] propertyNames,

Type[] types ) throws CallbackException {

if(isAuditable(entity)){//如果该实体需要被记录,生成对应的event。

//此处生成对应的event。

}

return false;

}

在程序执行后,发现对应一条实体的变化生成了多条重复的event记录,非常不解。

后来google发现,有人也碰到过对应的问题,并在Hibernage论坛中提出过这个问题,鉴定为Hibernate的一个小Bug。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值