Hallo liebe Forum-Member,
ich arbeite an einem JEE 6 (JSF) Projekt und benutze für die Datenverwaltung JPA (EclipseLink 2.0).
Mein Problem ist folgendes:
Ich möchte zwei Entities nacheinander speichern. Zuerst soll Entity A geschpeichert werden und anschließend Entity B. Geht dabei etwas schief (entweder bei A oder B), soll keine der beiden Entitäten in der Datenbank vorhanden sein.
Ich habe es so versucht:
In der ManagedBean benutze ich EJBs
@EJB
private ComputerFacade ComputerService;
@EJB
DeviceFacade deviceService;
Diese sind Stateless SessionBeans und benutzen den EntityManager für die Verwaltung der Entitäten:
@PersistenceContext(unitName = "Inv3PU")
private EntityManager em;
Das Problem tritt dabei auf wenn ich folgendes versuche:
}
Ich bekomme eine Exception Exception Description: Cannot use an EntityTransaction while using JTA.. Nun ich weiß, dass der ApplicationServer sich selbst um die Transaktionen kümmert. In diesem Fall muss ich aber beide Speichern-Operationen unter eine Decke bekommen. Leider bin ich da etwas ratlos.
Bin für jeden Vorschlag dankbar.
ich arbeite an einem JEE 6 (JSF) Projekt und benutze für die Datenverwaltung JPA (EclipseLink 2.0).
Mein Problem ist folgendes:
Ich möchte zwei Entities nacheinander speichern. Zuerst soll Entity A geschpeichert werden und anschließend Entity B. Geht dabei etwas schief (entweder bei A oder B), soll keine der beiden Entitäten in der Datenbank vorhanden sein.
Ich habe es so versucht:
In der ManagedBean benutze ich EJBs
@EJB
private ComputerFacade ComputerService;
@EJB
DeviceFacade deviceService;
Diese sind Stateless SessionBeans und benutzen den EntityManager für die Verwaltung der Entitäten:
@PersistenceContext(unitName = "Inv3PU")
private EntityManager em;
Das Problem tritt dabei auf wenn ich folgendes versuche:
Java:
ComputerService.getEntityManager.getTransaction.begin();
ComputerService.getEntityManager.getTransaction.begin();
try {
ComputerService.persist(entity);
deviceService.persist(entity);
ComputerService.getEntityManager.getTransaction.commit();
ComputerService.getEntityManager.getTransaction.commit();
}
catch (Exception e)
{
ComputerService.getEntityManager.getTransaction.rollback();
ComputerService.getEntityManager.getTransaction.rollback();
}
Ich bekomme eine Exception Exception Description: Cannot use an EntityTransaction while using JTA.. Nun ich weiß, dass der ApplicationServer sich selbst um die Transaktionen kümmert. In diesem Fall muss ich aber beide Speichern-Operationen unter eine Decke bekommen. Leider bin ich da etwas ratlos.
Bin für jeden Vorschlag dankbar.
Zuletzt bearbeitet: