diff --git a/pom.xml b/pom.xml index a5606ea939b1b8cb948e03c408e1dcdd1146607a..8530395c3820cf133792d4aad4efe2fc5b37f18c 100644 --- a/pom.xml +++ b/pom.xml @@ -85,7 +85,7 @@ <dependency> <groupId>org.hsqldb</groupId> <artifactId>hsqldb</artifactId> - <version>1.8.0.10</version> + <version>2.2.8</version> <scope>runtime</scope> </dependency> <!-- MySQL JDBC Connector --> diff --git a/src/main/java/org/springframework/samples/petclinic/BaseEntity.java b/src/main/java/org/springframework/samples/petclinic/BaseEntity.java index 8913ab009621380bf0605d35f8b742899d1a6692..69cb3b493eea1d7fe3ccd5f16c436f743b870acb 100644 --- a/src/main/java/org/springframework/samples/petclinic/BaseEntity.java +++ b/src/main/java/org/springframework/samples/petclinic/BaseEntity.java @@ -1,5 +1,7 @@ package org.springframework.samples.petclinic; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.MappedSuperclass; @@ -12,7 +14,7 @@ import javax.persistence.MappedSuperclass; */ @MappedSuperclass public class BaseEntity { - @Id + @Id @GeneratedValue(strategy = GenerationType.IDENTITY) protected Integer id; diff --git a/src/main/java/org/springframework/samples/petclinic/Vet.java b/src/main/java/org/springframework/samples/petclinic/Vet.java index e4250ae9ce76e3a4aab3a5a01c0750b60fab1c52..5ef56fe8e2ca5787cc284006a0c98c20a0305011 100644 --- a/src/main/java/org/springframework/samples/petclinic/Vet.java +++ b/src/main/java/org/springframework/samples/petclinic/Vet.java @@ -7,6 +7,8 @@ import java.util.List; import java.util.Set; import javax.persistence.Entity; +import javax.persistence.JoinColumn; +import javax.persistence.JoinTable; import javax.persistence.ManyToMany; import javax.persistence.Table; import javax.xml.bind.annotation.XmlElement; @@ -25,7 +27,8 @@ import org.springframework.beans.support.PropertyComparator; @Entity @Table(name="vets") public class Vet extends Person { - @ManyToMany + @ManyToMany @JoinTable (name="vet_specialties",joinColumns = @JoinColumn(name = "vet_id"), + inverseJoinColumns= @JoinColumn(name = "specialty_id")) private Set<Specialty> specialties; diff --git a/src/main/java/org/springframework/samples/petclinic/jpa/EntityManagerClinic.java b/src/main/java/org/springframework/samples/petclinic/jpa/EntityManagerClinic.java index d3fe8ef366e7be21d649f51b9f1ebc05f44be59e..e3c82fc12855443ee815620ea2df04e0528a1829 100644 --- a/src/main/java/org/springframework/samples/petclinic/jpa/EntityManagerClinic.java +++ b/src/main/java/org/springframework/samples/petclinic/jpa/EntityManagerClinic.java @@ -24,6 +24,7 @@ import org.springframework.dao.DataAccessException; * @author Mike Keith * @author Rod Johnson * @author Sam Brannen + * @author Michael Isvy * @since 22.4.2006 */ @Repository @@ -65,27 +66,16 @@ public class EntityManagerClinic implements Clinic { } public void storeOwner(Owner owner) { - // Consider returning the persistent object here, for exposing - // a newly assigned id using any persistence provider... - Owner merged = this.em.merge(owner); - this.em.flush(); - owner.setId(merged.getId()); + this.em.merge(owner); + } public void storePet(Pet pet) { - // Consider returning the persistent object here, for exposing - // a newly assigned id using any persistence provider... - Pet merged = this.em.merge(pet); - this.em.flush(); - pet.setId(merged.getId()); + this.em.merge(pet); } public void storeVisit(Visit visit) { - // Consider returning the persistent object here, for exposing - // a newly assigned id using any persistence provider... - Visit merged = this.em.merge(visit); - this.em.flush(); - visit.setId(merged.getId()); + this.em.merge(visit); } public void deletePet(int id) throws DataAccessException { diff --git a/src/main/resources/db/hsqldb/initDB.sql b/src/main/resources/db/hsqldb/initDB.sql index a75bfbbd86da3da4e60d6fbd5ed565837453b657..e6a8a1935416d682660b94aee4d91aaad8b7eea9 100644 --- a/src/main/resources/db/hsqldb/initDB.sql +++ b/src/main/resources/db/hsqldb/initDB.sql @@ -1,12 +1,12 @@ CREATE TABLE vets ( - id INTEGER NOT NULL IDENTITY PRIMARY KEY, + id INTEGER IDENTITY PRIMARY KEY, first_name VARCHAR(30), last_name VARCHAR(30) ); CREATE INDEX vets_last_name ON vets(last_name); CREATE TABLE specialties ( - id INTEGER NOT NULL IDENTITY PRIMARY KEY, + id INTEGER IDENTITY PRIMARY KEY, name VARCHAR(80) ); CREATE INDEX specialties_name ON specialties(name); @@ -19,13 +19,13 @@ alter table vet_specialties add constraint fk_vet_specialties_vets foreign key ( alter table vet_specialties add constraint fk_vet_specialties_specialties foreign key (specialty_id) references specialties(id); CREATE TABLE types ( - id INTEGER NOT NULL IDENTITY PRIMARY KEY, + id INTEGER IDENTITY PRIMARY KEY, name VARCHAR(80) ); CREATE INDEX types_name ON types(name); CREATE TABLE owners ( - id INTEGER NOT NULL IDENTITY PRIMARY KEY, + id INTEGER IDENTITY PRIMARY KEY, first_name VARCHAR(30), last_name VARCHAR(30), address VARCHAR(255), @@ -35,7 +35,7 @@ CREATE TABLE owners ( CREATE INDEX owners_last_name ON owners(last_name); CREATE TABLE pets ( - id INTEGER NOT NULL IDENTITY PRIMARY KEY, + id INTEGER IDENTITY PRIMARY KEY, name VARCHAR(30), birth_date DATE, type_id INTEGER NOT NULL, @@ -46,7 +46,7 @@ alter table pets add constraint fk_pets_types foreign key (type_id) references t CREATE INDEX pets_name ON pets(name); CREATE TABLE visits ( - id INTEGER NOT NULL IDENTITY PRIMARY KEY, + id INTEGER IDENTITY PRIMARY KEY, pet_id INTEGER NOT NULL, visit_date DATE, description VARCHAR(255) diff --git a/src/test/java/org/springframework/samples/petclinic/jpa/JpaClinicTests.java b/src/test/java/org/springframework/samples/petclinic/jpa/JpaClinicTests.java index ae4acc1ca2fccbd962cd4fe648466b804ab7d135..d4ccd5da21d1356c50cea404aa4f4c3723495408 100644 --- a/src/test/java/org/springframework/samples/petclinic/jpa/JpaClinicTests.java +++ b/src/test/java/org/springframework/samples/petclinic/jpa/JpaClinicTests.java @@ -23,6 +23,7 @@ import org.springframework.samples.petclinic.Visit; import org.springframework.samples.petclinic.util.EntityUtils; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.transaction.annotation.Transactional; /** * <p> @@ -65,7 +66,7 @@ public class JpaClinicTests { } - @Test + @Test @Transactional public void testGetVets() { Collection<Vet> vets = this.clinic.getVets(); @@ -141,7 +142,7 @@ public class JpaClinicTests { assertEquals("Peter", p6.getOwner().getFirstName()); } - @Test + @Test @Transactional public void testInsertPet() { Owner o6 = this.clinic.findOwner(6); int found = o6.getPets().size(); @@ -168,7 +169,7 @@ public class JpaClinicTests { assertEquals(old + "X", p7.getName()); } - @Test + @Test @Transactional public void testInsertVisit() { Pet p7 = this.clinic.findPet(7); int found = p7.getVisits().size();