Inyectando JPA's Entity Manager en el EmptyInterceptor de Hibernate

Estoy usando JPA-2.0 con Hibernate en mi capa de acceso a datos.

Para fines de registro de auditoría, estoy usando el EmptyInterceptor de Hibernate configurando la siguiente propiedad en persistence.xml:

<property name="hibernate.ejb.interceptor"  
                value="com.mycom.audit.AuditLogInterceptor" /> 

DóndeAuditLogInterceptor se extiende de hibernateorg.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 
    }  
}  

Estoy usando el administrador de entidades JPA en la capa de acceso a datos para realizar operaciones de base de datos. La configuración de JPA es como a continuación:

<bean id="entityManagerFactory"
        class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"
        p:persistenceUnitName="PersistenceUnit"
        p:persistenceXmlLocation="classpath*:persistence.xml"
        p:dataSource-ref="dataSource" p:jpaVendorAdapter-ref="jpaAdapter">
        <property name="loadTimeWeaver">
            <bean
                class="org.springframework.instrument.classloading.InstrumentationLoadTimeWeaver" />
        </property>
    </bean>

Mi AbstractDAO es:

public class AbstractDao<T, ID extends Serializable> {

    private final transient Class<T> persistentClass;

    protected transient EntityManager entityManager;

    @SuppressWarnings("unchecked")
    public AbstractDao() {

        this.persistentClass = (Class<T>) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0];
    }

    @PersistenceContext
    public final void setEntityManager(final EntityManager entityMgrToSet) {

        this.entityManager = entityMgrToSet;
    }

    public final Class<T> getPersistentClass() {

        return persistentClass;
    }

    public final void persist(final T entity) {

         entityManager.persist(entity);       
    }

}

Me gustaría inyectar el administrador de entidades JPA en 'AuditLogInterceptor' para poder realizar operaciones de base de datos en 'AuditLogInterceptor' como mi resumen DAO.

¿Alguna idea? ¿Cuál debería ser la solución adecuada?

Respuestas a la pregunta(2)

Su respuesta a la pregunta