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
Mi a környezet amúgy? Spring vagy JavaEE?
https://iotguru.cloud
Ó, ezt elfelejtettem. JavaEE, GlassFish, EclipseLink
Aham. Nos, nem igazán tudod keverni, illetve nem így, de ebbe egy kicsit komplex dolog belemenni... szerintem olvass utána, vannak közepesen vastag könyvek a témában, amelyekből pár óra alatt át lehet látni, hogy mi is történik.
https://iotguru.cloud
>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.
Izé, igen, a kettő nem lesz soha egy tranzakcióban. Lehet kérni UT-t JTA esetén is, de nem így, szóval jelentősen át kell faragni a kódbázist, megnézni, hogy mi kell legyen egy tranzakcióban és azokat egyben megcsinálni.
https://iotguru.cloud