package org.jboss.seam.framework; import javax.persistence.EntityManager; import javax.transaction.SystemException; import org.jboss.seam.persistence.PersistenceProvider; import org.jboss.seam.transaction.Transaction; public class EntityIdentifier extends Identifier<EntityManager> { public EntityIdentifier(Object entity, EntityManager entityManager) { super(PersistenceProvider.instance().getBeanClass(entity), PersistenceProvider.instance().getId(entity, entityManager)); } public EntityIdentifier(Class clazz, Object id) { super(clazz, id); } @Override public Object find(EntityManager entityManager) { if (entityManager == null) { throw new NullPointerException("EntityManager must not be null"); } try { Transaction.instance().enlist(entityManager); } catch (SystemException se) { throw new RuntimeException("could not join transaction", se); } return entityManager.find(getClazz(), getId()); } }