comment spring data jpa référentiel.enregistrer seulement la mise à jour
Comment spring-data-jpa repository.save
seulement update
mais PAS en créer un si la clé primaire n'est pas trouvé.
Actuellement, référentiel.enregistrer() permet de créer un enregistrement dans ma base de données si elle ne trouve pas
Vous devez vous connecter pour publier un commentaire.
Repository.save()
est un double objectif méthode pour Insérer ainsi que mise à JourIl y a deux mécanismes utilisés par le Printemps de décider si elle doit utiliser Insérer ou mise à Jour sur une entité:
@Id
) de l'entité, si l'entité est nouveau ou pas. Si la propriété de l'identifiant est nulle, alors l'entité est considérée comme nouveau, sinon pas de nouvelles.Persistable
. Pour les entités qui mettent en œuvre desPersistable
, Printempsva appeler
isNew(…)
méthode pour déterminer si elle doit être Inséré ou mis à Jour.save()
opération est mise en œuvre par Spring Data JPA cadre.EntityManager.persist()
seulement, et non pas leEntityManager.merge()
qui Ressort des DonnéesJpaRepository.save()
utilise. Donc, j'ai mis en place lePersistable
interface. Ce post a été la seule documentation que j'ai trouvé pour résoudre ce problème, j'ai donc upvoted votre réponse.@ManishMaheshwari signifié Référentiel.findeOne(Id).
Voici un exemple d'un contrôleur:
J'ai ce cas, nous obtenons existants valeur de l'Id de la trajectoire et de la passer dans le .findOne(). De cette façon, nous obtenir la recette avec le bon Id, nous voulons mettre à jour. Ensuite, vous pouvez faire de la logique supplémentaire ou tout simplement .save(). En utilisant cette approche, il va mettre à jour l'entité avec l'Id que vous avez passé dans le pour vous.