JPA Initialize in Application Scoped Class

DanielS

Mitglied
Hallo,

ich habe eine ApplicationScoped Klasse, und möchte darin nun ein Hibernate.initialize ausführen. Entweder ich verwende dazu irgendwie EJB oder ich starte ein Transaktion von Hand.
Ich habe folgendes probiert:
entityManager.getTransaction().begin();
Hibernate.initialize(..)
entityManager.getTransaction().commit().

Hier bekomme ich nun den Fehler: "A JTA EntityManager cannot use getTransaction()".
Ich benutze JBOSS7.1. Hat jemand eine Idee, wie ich das lösen kann?

Viele Grüße
Daniel
 

DanielS

Mitglied
Weil ich ansonsten eine "failed to lazy initialize a colletion.." Exception bekomme, wenn ich auf die 1:n Listen zugreifen möchte (auch wenn die Klasse @Stateful ist).

Viele Grüße
Daniel
 

JimPanse

Bekanntes Mitglied
Das hat damit aber nichts zu tun. Lazy listen musst du entweder durch einen JOIN FETCH expliziet nach laden oder du verwendest einen EntityManager mit einem extended persistence context.

Grundlagen der JPA

Grüße
 

DanielS

Mitglied
mit Hibernate.Initialize(meineEntity.getLazyList()) wird diese Liste aber auch geladen und kann dann verwendet werden. Das wurde auch überall in der Applikation so gemacht, nur leider kann ich Hibernate.initialize in der @ApplicationScoped entity nicht aufrufen.

Viele Grüße
Daniel
 

DanielS

Mitglied
Habe das Problem jetzt gelöst, indem ich anstatt der Annotation @ApplicationScope die Annotation @Singleton (EJB) verwende.

Vielen Dank für die Hilfe!
 

Ähnliche Java Themen

Neue Themen


Oben