J'essaie d'utiliser des intercepteurs dans mon code de printemps + hibernate.Intercepteur Hibernate ne fonctionne pas
La définition de Inceptor est comme ci-dessous:
public class myInterceptor extends EmptyInterceptor{
private static final long serialVersionUID = 1L;
Session session;
public void setSession(Session session) {
this.session=session;
}
public boolean onSave(Object entity,Serializable id,
Object[] state,String[] propertyNames,Type[] types)
throws CallbackException {
System.out.println("onSave");
return false;
}
public boolean onFlushDirty(Object entity,Serializable id,
Object[] currentState,Object[] previousState,
String[] propertyNames,Type[] types)
throws CallbackException {
System.out.println("onFlushDirty");
return false;
}
public void onDelete(Object entity, Serializable id,
Object[] state, String[] propertyNames,
Type[] types) {
System.out.println("onDelete");
}
//called before commit into database
public void preFlush(Iterator iterator) {
System.out.println("preFlush");
}
//called after committed into database
public void postFlush(Iterator iterator) {
System.out.println("postFlush");
}
}
et ma configuration intercepteurs et l'utilisation en classe dao avec le soutien de dao mise en veille prolongée extend
myInterceptor interceptor = new myInterceptor();
SessionFactory sessionFactory = getSessionFactory();
SessionBuilder sessionBuilder = sessionFactory.withOptions();
Session session = sessionBuilder.interceptor(interceptor).openSession();
interceptor.setSession(session);
Transaction tx = session.beginTransaction();
session.merge(member);
tx.commit();
session.close();
(je configuration SessionFactory au lieu de cela aussi)
Le premier problème est que les fonctions de mon intercepteur ne fonctionnent pas sauf preFlush et postFlush!
Le deuxième problème est comment je peux utiliser cet intercepteur en tant que configuration générale de SessionFactory, mais seulement en travaillant sur mon objet spécifique et pas tous les objets.
Veuillez partager le code EmptyInterceptor –
@NarendraPandey C'est dans le paquet org.hibernate et ce n'est pas mon code. –