2011-11-02 7 views
3

J'ai une application Vaadin soutenue par JPA. Les composants de cette application sont liés aux propriétés du bean (via une implémentation EL autonome). Certains composants sont liés à des objets externes (ou à leurs champs), liés par @OneToOne, @OneToMany, @ManyToOne et @ManyToMany. La liaison est exécutée en implémentant com.vaadin.data.Property et en la définissant comme DataSources des composants.Vaadin + JPA + chargement paresseux

La question est: le chargement paresseux fonctionnera-t-il dans "Property" ies si le composant sera rafraîchi d'une façon ou d'une autre (par ajaxes de vaadin) après que le formulaire soit servi au navigateur?

Répondre

2

Si vous avez défini votre PersistanceContext sur votre EntityManager sur PersistenceContextType.EXTENDED, vos entités le gèreront et donc aussi vaadin. Si vous ne l'avez pas, vous devrez les charger manuellement.

@PersistenceContext(unitName = "yourname", type=PersistenceContextType.EXTENDED) 
private EntityManager entityManager; 
+0

Merci pour votre réponse! Mais dans mon cas, je dois construire EntityManager par moi-même à partir de EntityManagerFactory, donc je ne peux pas utiliser @PersistenceContext EntityManager. Peut-être que j'ai trouvé une sorte de solution - Je veux lire EntityManager stocké dans com.vaadin.Application et écrire en utilisant EntityManager qui est créé chaque fois que j'ai besoin d'écrire quelque chose. –

+0

Ma dernière réponse est déjà obsolète. J'ai dû revisiter l'architecture du code de communication db, et j'ai eu un autre essai avec jpa, cette fois avec EntityManager à la portée de la requête, résultant en une génération de requêtes SELECT à chaque fusion du grand graphe d'objet. Maintenant je regarde vers l'approche jOOQ, sans JPA du tout) –