From 5bf31dbe5a8858430b3b0a3ef9c640e236950c49 Mon Sep 17 00:00:00 2001 From: Mic <misvy@vmware.com> Date: Thu, 9 May 2013 01:09:21 +0800 Subject: [PATCH] fixed JPA issue when updating existing owners/pets --- .../petclinic/repository/jpa/JpaOwnerRepositoryImpl.java | 7 ++++++- .../petclinic/repository/jpa/JpaPetRepositoryImpl.java | 7 ++++++- .../petclinic/repository/jpa/JpaVisitRepositoryImpl.java | 7 ++++++- .../petclinic/service/AbstractClinicServiceTests.java | 2 +- 4 files changed, 19 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/springframework/samples/petclinic/repository/jpa/JpaOwnerRepositoryImpl.java b/src/main/java/org/springframework/samples/petclinic/repository/jpa/JpaOwnerRepositoryImpl.java index fd0f217..c7398df 100644 --- a/src/main/java/org/springframework/samples/petclinic/repository/jpa/JpaOwnerRepositoryImpl.java +++ b/src/main/java/org/springframework/samples/petclinic/repository/jpa/JpaOwnerRepositoryImpl.java @@ -70,7 +70,12 @@ public class JpaOwnerRepositoryImpl implements OwnerRepository { @Override public void save(Owner owner) { - this.em.persist(owner); + if (owner.getId() == null) { + this.em.persist(owner); + } + else { + this.em.merge(owner); + } } diff --git a/src/main/java/org/springframework/samples/petclinic/repository/jpa/JpaPetRepositoryImpl.java b/src/main/java/org/springframework/samples/petclinic/repository/jpa/JpaPetRepositoryImpl.java index 4823aab..84d564d 100644 --- a/src/main/java/org/springframework/samples/petclinic/repository/jpa/JpaPetRepositoryImpl.java +++ b/src/main/java/org/springframework/samples/petclinic/repository/jpa/JpaPetRepositoryImpl.java @@ -53,7 +53,12 @@ public class JpaPetRepositoryImpl implements PetRepository { @Override public void save(Pet pet) { - this.em.persist(pet); + if (pet.getId() == null) { + this.em.persist(pet); + } + else { + this.em.merge(pet); + } } } diff --git a/src/main/java/org/springframework/samples/petclinic/repository/jpa/JpaVisitRepositoryImpl.java b/src/main/java/org/springframework/samples/petclinic/repository/jpa/JpaVisitRepositoryImpl.java index fccf795..3415def 100644 --- a/src/main/java/org/springframework/samples/petclinic/repository/jpa/JpaVisitRepositoryImpl.java +++ b/src/main/java/org/springframework/samples/petclinic/repository/jpa/JpaVisitRepositoryImpl.java @@ -45,7 +45,12 @@ public class JpaVisitRepositoryImpl implements VisitRepository { @Override public void save(Visit visit) { - this.em.persist(visit); + if (visit.getId() == null) { + this.em.persist(visit); + } + else { + this.em.merge(visit); + } } diff --git a/src/test/java/org/springframework/samples/petclinic/service/AbstractClinicServiceTests.java b/src/test/java/org/springframework/samples/petclinic/service/AbstractClinicServiceTests.java index e3c5f0a..02a21ac 100644 --- a/src/test/java/org/springframework/samples/petclinic/service/AbstractClinicServiceTests.java +++ b/src/test/java/org/springframework/samples/petclinic/service/AbstractClinicServiceTests.java @@ -89,8 +89,8 @@ public abstract class AbstractClinicServiceTests { owner.setCity("Wollongong"); owner.setTelephone("4444444444"); this.clinicService.saveOwner(owner); + Assert.assertNotEquals("Owner Id should have been generated", owner.getId().longValue(), 0); owners = this.clinicService.findOwnerByLastName("Schultz"); - assertNotNull("Owner Id should have been generated", owner.getId()); assertEquals("Verifying number of owners after inserting a new one.", found + 1, owners.size()); } -- GitLab