Comment pouvez-vous reproduire Hibernate saveOrUpdate en JPA?
En JPA, est-il possible que vous pouvez répliquer Hibernate saveOrUpdate comportement,
saveOrUpdate
public void saveOrUpdate(Object object)
throws HibernateException
Either save(Object) or update(Object) the given instance, depending upon resolution of the unsaved-value checks (see the manual for discussion of unsaved-value checking).
This operation cascades to associated instances if the association is mapped with cascade="save-update".
Parameters:
object - a transient or detached instance containing new or updated state
Throws:
HibernateException
See Also:
save(Object), update(Object)
qui vérifie pour voir si l'objet existe déjà dans la base de données et met à jour l'objet en tant que de besoin, ou d'enregistrer une nouvelle instance de l'objet.
JPA transcationless lit sont sympa, mais je suis vraiment en manque, cette méthode de mise en veille prolongée. Comment expérimentés JPA développeurs de gérer cela?
- Ce qu'il s'agit de vérifier si la "clé primaire" est null ?
Vous devez vous connecter pour publier un commentaire.
Essayez d'utiliser le
EntityManager.merge
méthode - c'est très similaire.Il y a une excellente description des différences dans Xebia de l'article sur le blog: "Implémentation JPA Motifs: Économie (Détaché) les Entités."
Le problème avec la méthode décrite dans l'article que Pablojim lié, c'est qu'il ne gère pas les auto généré des clés primaires très bien.
Envisager la création d'un nouvel ORM entity objet, vous pouvez donner ce les mêmes données dans une ligne existante dans la table de base de données, mais sauf erreur de ma part, l'entité gestionnaire de ne pas reconnaître que la même ligne jusqu'à ce qu'ils ont la même clé primaire, qui, dans une entité qui utilise les auto généré des clés, vous ne pouvez pas obtenir jusqu'à ce que vous allez jusqu'à la base de données.
Voici mon travail actuel autour de cette situation;