Cannot use an EntityTransaction while using JTA.

Fórumok

Sziasztok. 

Az alkalmazásban eddig "kézzel" kezeltük a tranzakciókat, EntityManagereket. Szeretnénk fokozatosan átállni a konténer által kezelt tranzakciókra és az EntityManager-t is injektálni szeretnénk..

A persistence.xml tartalma

<persistence-unit name="PU" transaction-type="JTA">
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
    <jta-data-source>jdbc/dtabase</jta-data-source>

Van egy ősosztály, ebben egy 

EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory(Constants.PERSISTENCE_UNIT_NAME);

public EntityManagerFactory getEntityManagerFactory() {
    return entityManagerFactory;
}

Ezt leszármaztatva az örökölt osztályokban ezzel szerezzük meg az EntityManager-t. 

EntityManager entityManager = getEntityManagerFactory().createEntityManager();
entityManager.getTransaction().begin();
entityManager.merge(valami);
entityManager.getTransaction().commit();

Most, ki szerettük volna próbálni, hogy a konténer kezelje a dolgokat, így próbaképpen egy egyszerű funkciót szerettünk volna megvalósítani. De amint bekerül egy 

@PersistenceContext(name = "PU")
private EntityManager em;

annotáció a kódba, az eddigi megoldásokra futás időben "Cannot use an EntityTransaction while using JTA." hibaüzenetet kapunk.

A két módszert egyszerre lehet használni? Ha igen hogyan?

A használt környezet: JavaEE, GlassFish, EclipseLink

Hozzászólások

>A két módszert egyszerre lehet használni? Ha igen hogyan?

Hozz letre 2 persistence-unit-ot (egy JTA-t meg egy resource local-t) es hasznald oket a megfelelo helyen. Technikailag ez mukodik, de probalgatasnal tobbre en biztos nem hasznalnam ezt a megoldast, mert behoz egy sor egyeb problemat.
Vagy az egyiket, vagy a masikat kell hasznalni.