From b3b536194a12cae2772cf45f55692b01ddfb1f43 Mon Sep 17 00:00:00 2001 From: Julien Dubois Date: Mon, 25 Feb 2013 22:33:08 +0100 Subject: [PATCH 1/2] Transactions should be on the root application context (or Hibernate will not be able to persist entities) --- src/main/resources/spring/dao-config.xml | 4 +++- src/main/resources/spring/mvc-core-config.xml | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/resources/spring/dao-config.xml b/src/main/resources/spring/dao-config.xml index 620f88527..9ea5c1764 100644 --- a/src/main/resources/spring/dao-config.xml +++ b/src/main/resources/spring/dao-config.xml @@ -22,6 +22,8 @@ + @@ -40,7 +42,7 @@ diff --git a/src/main/resources/spring/mvc-core-config.xml b/src/main/resources/spring/mvc-core-config.xml index 3724b0559..426f12315 100644 --- a/src/main/resources/spring/mvc-core-config.xml +++ b/src/main/resources/spring/mvc-core-config.xml @@ -20,7 +20,7 @@ - POJOs labeled with the @Controller and @Service annotations are auto-detected. --> + base-package="org.springframework.samples.petclinic.web"/> From d28f4e5257aee8ba0bce8afb46f7b6a74a1c8f04 Mon Sep 17 00:00:00 2001 From: Julien Dubois Date: Mon, 25 Feb 2013 22:40:24 +0100 Subject: [PATCH 2/2] Adding a DISTINCT clause so we only have users once --- .../petclinic/repository/jpa/JpaOwnerRepositoryImpl.java | 2 +- .../repository/springdatajpa/JpaOwnerRepositoryImpl.java | 2 +- 2 files changed, 2 insertions(+), 2 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 3b85bfd8d..acebc6366 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 @@ -45,7 +45,7 @@ public class JpaOwnerRepositoryImpl implements OwnerRepository { public Collection findByLastName(String lastName) { // using 'join fetch' because a single query should load both owners and pets // using 'left join fetch' because it might happen that an owner does not have pets yet - Query query = this.em.createQuery("SELECT owner FROM Owner owner left join fetch owner.pets WHERE owner.lastName LIKE :lastName"); + Query query = this.em.createQuery("SELECT DISTINCT owner FROM Owner owner left join fetch owner.pets WHERE owner.lastName LIKE :lastName"); query.setParameter("lastName", lastName + "%"); return query.getResultList(); } diff --git a/src/main/java/org/springframework/samples/petclinic/repository/springdatajpa/JpaOwnerRepositoryImpl.java b/src/main/java/org/springframework/samples/petclinic/repository/springdatajpa/JpaOwnerRepositoryImpl.java index e6d050e59..1ce4a6aad 100644 --- a/src/main/java/org/springframework/samples/petclinic/repository/springdatajpa/JpaOwnerRepositoryImpl.java +++ b/src/main/java/org/springframework/samples/petclinic/repository/springdatajpa/JpaOwnerRepositoryImpl.java @@ -43,7 +43,7 @@ public class JpaOwnerRepositoryImpl implements OwnerRepository { public Collection findByLastName(String lastName) { // using 'join fetch' because a single query should load both owners and pets // using 'left join fetch' because it might happen that an owner does not have pets yet - Query query = this.em.createQuery("SELECT owner FROM Owner owner left join fetch owner.pets WHERE owner.lastName LIKE :lastName"); + Query query = this.em.createQuery("SELECT DISTINCT owner FROM Owner owner left join fetch owner.pets WHERE owner.lastName LIKE :lastName"); query.setParameter("lastName", lastName + "%"); return query.getResultList(); }