Ich versuche den Hibernate Entity Manager mit mysql und glassfish zu benutzen. Beim Versuch, eine JTA-Datenquelle zu verwenden, erhalte ich den folgenden Fehler:
%Vor%So habe ich meine persistence.xml konfiguriert
%Vor%
Wenn ich jedoch eine Nicht-JTA-Datenquelle konfiguriere, funktioniert sie einwandfrei.
%Vor%Das ist alles gut und gut, aber ich würde wirklich gerne verwenden:
%Vor%anstelle von:
%Vor%
Fehle ich etwas mit der Hibernate-Konfiguration oder ist es sogar möglich, eine JTA-Datenquelle zu verwenden?
Für Ihre Konfiguration werden standardmäßig Container-verwaltete Transaktionen verwendet. In diesem Fall müssen Sie eine Art der Transaktionssynchronisierung definieren, damit der Persistenz-Layer benachrichtigt wird (und beispielsweise den Cache der 2. Ebene aktualisieren kann). Sie müssen also manager_lookup_class
definieren Eigenschaft wie folgt:
Sie müssen auch Geschäftsmethoden markieren, die auf Datenebene als "transaktional" zugreifen. Dafür müssen Sie sie mit @javax.ejb.TransactionAttribute(REQUIRED)
markieren (siehe hier ) Informationen über diese Anmerkung).
Sie haben auch die Möglichkeit, zu Bean-verwalteten Transaktionen zu wechseln. Sie können es tun, indem Sie sagen:
hibernate.transaction.factory_class=org.hibernate.transaction.JTATransactionFactory
Dann ist die Bean verantwortlich für das Starten / Beenden der Transaktion:
%Vor%Tags und Links mysql hibernate glassfish hibernate-entitymanager jta