Внедрение диспетчера сущностей JPA в EmptyInterceptor в Hibernate
Я использую JPA-2.0 с Hibernate на своем уровне доступа к данным.
В целях ведения журнала аудита я использую Hibernate 's EmptyInterceptor, настроив свойство ниже в persistence.xml:
кудаAuditLogInterceptor расширяет спящийorg.hibernate.EmptyInterceptor.
public class AuditLogInterceptor extends EmptyInterceptor {
private Long userId;
public AuditLogInterceptor() {}
@Override
public boolean onSave(Object entity, Serializable id, Object[] state,
String[] propertyNames, Type[] types) throws CallbackException {
// Need to perform database operations using JPA entity manager
return false;
}
@Override
public boolean onFlushDirty(Object entity, Serializable id,
Object[] currentState, Object[] previousState,
String[] propertyNames, Type[] types) {
// other code here
return false;
}
@Override
public void postFlush(Iterator iterator) throws CallbackException {
System.out.println("I am on postFlush");
// other code here
}
}
Я использую менеджер сущностей JPA на уровне доступа к данным для выполнения операций с базой данных. Конфигурация JPA, как показано ниже:
Мой AbstractDAO это:
public class AbstractDao {
private final transient Class persistentClass;
protected transient EntityManager entityManager;
@SuppressWarnings("unchecked")
public AbstractDao() {
this.persistentClass = (Class) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0];
}
@PersistenceContext
public final void setEntityManager(final EntityManager entityMgrToSet) {
this.entityManager = entityMgrToSet;
}
public final Class getPersistentClass() {
return persistentClass;
}
public final void persist(final T entity) {
entityManager.persist(entity);
}
}
Я хотел бы добавить менеджер сущности JPA вAuditLogInterceptor» так что я могу выполнять операции с базой данных вAuditLogInterceptor» как мой абстрактный DAO.
Любая идея? Каким должно быть правильное решение?