From 80159fa3d752dedbdef33108b08723a5981b5ab1 Mon Sep 17 00:00:00 2001
From: Mic <misvy@vmware.com>
Date: Tue, 7 May 2013 10:54:35 +0800
Subject: [PATCH] fixed bug in JPA implementation: "save" methods were
 implemented using "merge" instead of "persist"

---
 .../petclinic/repository/jpa/JpaOwnerRepositoryImpl.java     | 2 +-
 .../petclinic/repository/jpa/JpaPetRepositoryImpl.java       | 2 +-
 .../petclinic/repository/jpa/JpaVisitRepositoryImpl.java     | 2 +-
 .../petclinic/service/AbstractClinicServiceTests.java        | 5 +++++
 4 files changed, 8 insertions(+), 3 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 dfa00ce..fd0f217 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,7 @@ public class JpaOwnerRepositoryImpl implements OwnerRepository {
 
     @Override
     public void save(Owner owner) {
-        this.em.merge(owner);
+        this.em.persist(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 ea185cc..4823aab 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,7 @@ public class JpaPetRepositoryImpl implements PetRepository {
 
     @Override
     public void save(Pet pet) {
-        this.em.merge(pet);
+        this.em.persist(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 58d3709..fccf795 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,7 @@ public class JpaVisitRepositoryImpl implements VisitRepository {
 
     @Override
     public void save(Visit visit) {
-        this.em.merge(visit);
+        this.em.persist(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 b29fb94..e3c5f0a 100644
--- a/src/test/java/org/springframework/samples/petclinic/service/AbstractClinicServiceTests.java
+++ b/src/test/java/org/springframework/samples/petclinic/service/AbstractClinicServiceTests.java
@@ -16,11 +16,13 @@
 package org.springframework.samples.petclinic.service;
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
 
 import java.util.Collection;
 
 import org.joda.time.DateTime;
+import org.junit.Assert;
 import org.junit.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.samples.petclinic.model.Owner;
@@ -88,6 +90,7 @@ public abstract class AbstractClinicServiceTests {
         owner.setTelephone("4444444444");
         this.clinicService.saveOwner(owner);
         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());
     }
 
@@ -142,6 +145,7 @@ public abstract class AbstractClinicServiceTests {
 	    this.clinicService.saveOwner(owner6);
 	    owner6 = this.clinicService.findOwnerById(6);
 	    assertEquals(found + 1, owner6.getPets().size());
+	    assertNotNull("Pet Id should have been generated", pet.getId());
 	}
 
 	@Test
@@ -183,6 +187,7 @@ public abstract class AbstractClinicServiceTests {
 	    this.clinicService.savePet(pet7);
 	    pet7 = this.clinicService.findPetById(7);
 	    assertEquals(found + 1, pet7.getVisits().size());
+	    assertNotNull("Visit Id should have been generated", visit.getId());
 	}
 
 
-- 
GitLab