Внедрение диспетчера сущностей 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.

Любая идея? Каким должно быть правильное решение?

Ответы на вопрос(2)

Ваш ответ на вопрос