public void addListener(JREntityListener t) { JpaEntityManager entityManager = null; try { // Create an entity manager for use in this function entityManager = (JpaEntityManager) entityManagerFactory.createEntityManager(); // Use the entity manager to get a ClassDescriptor for the Entity class ClassDescriptor desc = entityManager.getSession().getClassDescriptor(t.getTarget()); JRDescriptorEventListener jrDescriptorEventListener = new JRDescriptorEventListener(t); desc.getEventManager().addListener(jrDescriptorEventListener); logger.info("Entity Listener for " + t.getTarget().getCanonicalName() + " is added"); } catch (Exception e) { logger.error(e.getMessage(), e); } finally { if (entityManager != null) { // Cleanup the entity manager entityManager.close(); } } }