升级到 Hibernate 5 后 Hibernate 拦截器不工作

sat*_*ahi 5 java hibernate interceptor hibernate-5

早些时候,我的拦截器代码在 Hibernate 3 上运行良好。在我升级到 Hibernate 5 并进行必要的更改后,像 onSave 和 onFlushDirty 这样的回调方法停止工作。

关于库更改,下面的 Hibernate 3 jar 我替换为 Hibernate 5 jar。

Hibernate 3 jars被替换-

  • dom4j.jar
  • hibernate-core-4.3.5.Final.jar
  • hibernate-jpa-2.1-api-1.0.0.Final.jar
  • jboss-logging.jar

添加了 Hibernate 5 jars-

  • 字节伙伴-1.9.5.jar
  • 同学-1.3.4.jar
  • dom4j-2.1.1.jar
  • hibernate-commons-annotations-5.1.0.Final.jar
  • hibernate-core-5.4.1.Final.jar
  • javax.persistence-api-2.2.jar
  • javax.transaction.jar
  • jboss-logging-3.3.2.Final.jar

下面是我的拦截器代码-

public class CustomInterceptor extends EmptyInterceptor {

@Override
public boolean onFlushDirty(Object entity, Serializable id, Object[] currentState, Object[] previousState, String[] propertyNames, Type[] types) {
    System.out.println("onFlushDirty called");
    return super.onFlushDirty(entity, id, currentState, previousState, propertyNames, types);
}

@Override
public boolean onSave(Object entity, Serializable id, Object[] state, String[] propertyNames, Type[] types) {
    System.out.println("onSavecalled");
    return super.onSave(entity, id, state, propertyNames, types);
}
}
Run Code Online (Sandbox Code Playgroud)

如果有人可以指出我遗漏的内容或我需要进行的任何更正,那将非常有帮助。

请注意 - 整个应用程序运行顺利,除了拦截器回调方法没有被调用。

Nom*_*asi 2

您可以尝试以下操作吗:

Session session = sessionFactory.withOptions()
                  .interceptor(new CustomInterceptor())
                  .openSession();
Run Code Online (Sandbox Code Playgroud)