Java 休眠拦截器
我正在尝试实现所描述的方法,但无法使其工作 编译期间没有错误,但侦听器从未触发 道: 拦截器类:Java 休眠拦截器,java,hibernate,spring,Java,Hibernate,Spring,我正在尝试实现所描述的方法,但无法使其工作 编译期间没有错误,但侦听器从未触发 道: 拦截器类: public class NewEntityInterceptor extends EmptyInterceptor implements Interceptor { /** * */ private static final long serialVersionUID = 2914362528125673753L; @Override pub
public class NewEntityInterceptor extends EmptyInterceptor implements Interceptor {
/**
*
*/
private static final long serialVersionUID = 2914362528125673753L;
@Override
public Boolean isTransient(Object n) {
Logger logger = Logger.getLogger(getClass().getName());
try {
logger.warn("test");
Boolean result = Boolean.FALSE;
BaseEntity entity = (BaseEntity) n;
if (entity.getId() <= 0L) {
entity.setId(null);
result = Boolean.TRUE;
}
logger.warn(result.toString());
return result;
}
catch (Exception e) {
e.printStackTrace();
return super.isTransient(n);
}
}
}
公共类NewEntityInterceptor扩展了EmptyInterceptor实现了Interceptor{
/**
*
*/
私有静态最终长serialVersionUID=2914362528125673753L;
@凌驾
公共布尔值isTransient(对象n){
Logger=Logger.getLogger(getClass().getName());
试一试{
记录器。警告(“测试”);
布尔结果=Boolean.FALSE;
BaseEntity=(BaseEntity)n;
如果(entity.getId()代码中的观察很少
您没有覆盖EmptyInterceptor
中的任何方法。请使用示例拦截器示例进行检查
提供您可以拦截的实体生命周期事件的默认实现。您需要覆盖您感兴趣的方法
我不确定transactionManager
是否需要任何对拦截器的引用。这纯粹是一个休眠的东西。你可以取消它。拦截器需要会话或会话工厂(你使用的是会话级拦截器)
public class NewEntityInterceptor extends EmptyInterceptor implements Interceptor {
/**
*
*/
private static final long serialVersionUID = 2914362528125673753L;
@Override
public Boolean isTransient(Object n) {
Logger logger = Logger.getLogger(getClass().getName());
try {
logger.warn("test");
Boolean result = Boolean.FALSE;
BaseEntity entity = (BaseEntity) n;
if (entity.getId() <= 0L) {
entity.setId(null);
result = Boolean.TRUE;
}
logger.warn(result.toString());
return result;
}
catch (Exception e) {
e.printStackTrace();
return super.isTransient(n);
}
}
}
<bean id="newEntityInterceptor" class="de.crm.interceptor.NewEntityInterceptor" />
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
<property name="entityInterceptor" ref="newEntityInterceptor" />
</bean>