2010-07-20 6 views
0

J'ai 2 classes, parent et enfant, avec une relation @OneToMany. Chaque parent a 0 ou plusieurs enfants.JPA OneToMany problèmes après la mise à jour

@OneToMany(fetch=FetchType.LAZY, cascade={CascadeType.REMOVE}) 

La classe Parent a également d'autres champs comme le nom.

Je suis dans un conteneur env, donc mon interface utilisateur est faite de JSP.

Lorsque je veux changer l'objet Parent, je dois le passer à une servlet et au navigateur client. Dans la page Web, je ne veux pas mettre toutes les informations enfants, je veux seulement avoir un champ de texte pour le nom du parent.

Lorsque le retour de contrôle pour moi, je voudrais créer un nouvel objet Parent avec le nouveau nom de marque et merge avec le EntityManger sans se soucier des enfants.

Répondre

2

Je pense que la méthode correcte consiste à charger l'objet parent existant, à définir la propriété name à la nouvelle valeur et à l'enregistrer. C'est en fait ce que vous faites.

Votre formulaire a donc besoin d'un champ pour le nom que l'utilisateur peut entrer et d'un champ masqué contenant l'ID du parent. Lorsque le formulaire est publié, vous chargez l'objet parent par l'ID, définissez le nom à la valeur entrée et enregistrez.

+0

Merci Davis, c'est probablement le seul moyen. En termes de performance, puis-je supposer que PersistenceContext a probablement déjà une instance de l'objet? –

+0

Je ne suis pas sûr de ça. Cela dépend de votre configuration de mise en cache. Je suggère simplement que dans le cas normal, une recherche par identification est très rapide, sauf si vous avez des milliers d'enfants. Et n'oublie jamais que "l'optimisation prématurée est la racine de tout mal" ;-) –

Questions connexes