diff --git a/springboot-petclinic-client/src/scripts/owner-details/owner-details.template.html b/springboot-petclinic-client/src/scripts/owner-details/owner-details.template.html
index ed2810f9caef70346a734b3d560ad9da0713d59f..7c93a518d4eb6abe6450a6dfc4365988494bb5b7 100644
--- a/springboot-petclinic-client/src/scripts/owner-details/owner-details.template.html
+++ b/springboot-petclinic-client/src/scripts/owner-details/owner-details.template.html
@@ -43,6 +43,7 @@
         </td>
         <td valign="top">
             <table class="table-condensed">
+                <!-- TODO: no visits in pet resource -->
                 <thead>
                 <tr>
                     <th>Visit Date</th>
diff --git a/springboot-petclinic-server/src/main/java/org/springframework/samples/petclinic/boundary/web/visit/VisitResource.java b/springboot-petclinic-server/src/main/java/org/springframework/samples/petclinic/boundary/web/visit/VisitResource.java
index be857685f588853bd158227dada18fe17a57fbdb..694c4073b4261dc79621dcc17eb992e8e215829f 100644
--- a/springboot-petclinic-server/src/main/java/org/springframework/samples/petclinic/boundary/web/visit/VisitResource.java
+++ b/springboot-petclinic-server/src/main/java/org/springframework/samples/petclinic/boundary/web/visit/VisitResource.java
@@ -17,13 +17,13 @@ package org.springframework.samples.petclinic.boundary.web.visit;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
-import org.springframework.samples.petclinic.domain.model.pet.PetService;
 import org.springframework.samples.petclinic.domain.model.visit.Visit;
 import org.springframework.samples.petclinic.domain.model.visit.VisitService;
 import org.springframework.samples.petclinic.support.web.AbstractResourceController;
 import org.springframework.web.bind.annotation.*;
 
 import javax.validation.Valid;
+import java.util.List;
 
 /**
  * @author Juergen Hoeller
@@ -36,12 +36,9 @@ public class VisitResource extends AbstractResourceController {
 
     private final VisitService visitService;
 
-    private final PetService petService;
-
     @Autowired
-    public VisitResource(VisitService visitService, PetService petService) {
+    public VisitResource(VisitService visitService) {
         this.visitService = visitService;
-        this.petService = petService;
     }
 
     @PostMapping("/owners/{ownerId}/pets/{petId}/visits")
@@ -50,12 +47,12 @@ public class VisitResource extends AbstractResourceController {
             @Valid @RequestBody Visit visit,
             @PathVariable("petId") int petId) {
 
-        petService.findPetById(petId).addVisit(visit);
+        visit.setPetId(petId);
         visitService.saveVisit(visit);
     }
 
     @GetMapping("/owners/{ownerId}/pets/{petId}/visits")
-    public Object visits(@PathVariable("petId") int petId) {
-        return petService.findPetById(petId).getVisits();
+    public List<Visit> visits(@PathVariable("petId") int petId) {
+        return visitService.findVisitsByPetId(petId);
     }
 }
diff --git a/springboot-petclinic-server/src/main/java/org/springframework/samples/petclinic/domain/model/pet/Pet.java b/springboot-petclinic-server/src/main/java/org/springframework/samples/petclinic/domain/model/pet/Pet.java
index 7e5501f89e8f724bb23383f0e3f1370a7453a4c0..8cb22bae6a9e114e9256511a59414647d7a0e548 100644
--- a/springboot-petclinic-server/src/main/java/org/springframework/samples/petclinic/domain/model/pet/Pet.java
+++ b/springboot-petclinic-server/src/main/java/org/springframework/samples/petclinic/domain/model/pet/Pet.java
@@ -16,14 +16,11 @@
 package org.springframework.samples.petclinic.domain.model.pet;
 
 import com.fasterxml.jackson.annotation.JsonIgnore;
-import org.springframework.beans.support.MutableSortDefinition;
-import org.springframework.beans.support.PropertyComparator;
 import org.springframework.samples.petclinic.domain.model.owner.Owner;
-import org.springframework.samples.petclinic.domain.model.visit.Visit;
 import org.springframework.samples.petclinic.support.jpa.NamedEntity;
 
 import javax.persistence.*;
-import java.util.*;
+import java.util.Date;
 
 /**
  * Simple business object representing a pet.
@@ -49,16 +46,12 @@ public class Pet extends NamedEntity {
     @JsonIgnore
     private Owner owner;
 
-    @OneToMany(cascade = CascadeType.ALL, mappedBy = "pet", fetch = FetchType.EAGER)
-    private Set<Visit> visits;
-
-
     public void setBirthDate(Date birthDate) {
         this.birthDate = birthDate;
     }
 
     public Date getBirthDate() {
-        return this.birthDate;
+        return birthDate;
     }
 
     public void setType(PetType type) {
@@ -66,7 +59,7 @@ public class Pet extends NamedEntity {
     }
 
     public PetType getType() {
-        return this.type;
+        return type;
     }
 
     public void setOwner(Owner owner) {
@@ -74,29 +67,6 @@ public class Pet extends NamedEntity {
     }
 
     public Owner getOwner() {
-        return this.owner;
-    }
-
-    protected void setVisitsInternal(Set<Visit> visits) {
-        this.visits = visits;
-    }
-
-    protected Set<Visit> getVisitsInternal() {
-        if (this.visits == null) {
-            this.visits = new HashSet<>();
-        }
-        return this.visits;
+        return owner;
     }
-
-    public List<Visit> getVisits() {
-        List<Visit> sortedVisits = new ArrayList<Visit>(getVisitsInternal());
-        PropertyComparator.sort(sortedVisits, new MutableSortDefinition("date", false, false));
-        return Collections.unmodifiableList(sortedVisits);
-    }
-
-    public void addVisit(Visit visit) {
-        getVisitsInternal().add(visit);
-        visit.setPet(this);
-    }
-
 }
diff --git a/springboot-petclinic-server/src/main/java/org/springframework/samples/petclinic/domain/model/vet/Vet.java b/springboot-petclinic-server/src/main/java/org/springframework/samples/petclinic/domain/model/vet/Vet.java
index 2e6fb04a50f1e78c5cacadb31f40a5e0e40e5a38..07154388f02ee13aba6039863ee2657e005ff3ab 100644
--- a/springboot-petclinic-server/src/main/java/org/springframework/samples/petclinic/domain/model/vet/Vet.java
+++ b/springboot-petclinic-server/src/main/java/org/springframework/samples/petclinic/domain/model/vet/Vet.java
@@ -57,14 +57,14 @@ public class Vet extends Person {
 
     protected Set<Specialty> getSpecialtiesInternal() {
         if (this.specialties == null) {
-            this.specialties = new HashSet<Specialty>();
+            this.specialties = new HashSet<>();
         }
         return this.specialties;
     }
 
     @XmlElement
     public List<Specialty> getSpecialties() {
-        List<Specialty> sortedSpecs = new ArrayList<Specialty>(getSpecialtiesInternal());
+        List<Specialty> sortedSpecs = new ArrayList<>(getSpecialtiesInternal());
         PropertyComparator.sort(sortedSpecs, new MutableSortDefinition("name", true, true));
         return Collections.unmodifiableList(sortedSpecs);
     }
diff --git a/springboot-petclinic-server/src/main/java/org/springframework/samples/petclinic/domain/model/visit/Visit.java b/springboot-petclinic-server/src/main/java/org/springframework/samples/petclinic/domain/model/visit/Visit.java
index d2a90dc3007718e3b1aa04f1fff294a7eef97095..c8711e7412e6a537dd88b55467d03754efd47d5b 100644
--- a/springboot-petclinic-server/src/main/java/org/springframework/samples/petclinic/domain/model/visit/Visit.java
+++ b/springboot-petclinic-server/src/main/java/org/springframework/samples/petclinic/domain/model/visit/Visit.java
@@ -16,8 +16,6 @@
 package org.springframework.samples.petclinic.domain.model.visit;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
-import com.fasterxml.jackson.annotation.JsonIgnore;
-import org.springframework.samples.petclinic.domain.model.pet.Pet;
 import org.springframework.samples.petclinic.support.jpa.BaseEntity;
 
 import javax.persistence.*;
@@ -39,7 +37,7 @@ public class Visit extends BaseEntity {
     @Column(name = "visit_date")
     @Temporal(TemporalType.TIMESTAMP)
     @JsonFormat(pattern = "yyyy-MM-dd")
-    private Date date;
+    private Date date = new Date();
 
     /**
      * Holds value of property description.
@@ -49,21 +47,10 @@ public class Visit extends BaseEntity {
     private String description;
 
     /**
-     * Holds value of property pet.
+     * Holds id of property pet.
      */
-    @ManyToOne
-    @JoinColumn(name = "pet_id")
-    @JsonIgnore
-    private Pet pet;
-
-
-    /**
-     * Creates a new instance of Visit for the current date
-     */
-    public Visit() {
-        this.date = new Date();
-    }
-
+    @Column(name = "pet_id")
+    private int petId;
 
     /**
      * Getter for property date.
@@ -71,7 +58,7 @@ public class Visit extends BaseEntity {
      * @return Value of property date.
      */
     public Date getDate() {
-        return this.date;
+        return date;
     }
 
     /**
@@ -89,7 +76,7 @@ public class Visit extends BaseEntity {
      * @return Value of property description.
      */
     public String getDescription() {
-        return this.description;
+        return description;
     }
 
     /**
@@ -101,22 +88,12 @@ public class Visit extends BaseEntity {
         this.description = description;
     }
 
-    /**
-     * Getter for property pet.
-     *
-     * @return Value of property pet.
-     */
-    public Pet getPet() {
-        return this.pet;
+    public int getPetId() {
+        return petId;
     }
 
-    /**
-     * Setter for property pet.
-     *
-     * @param pet New value of property pet.
-     */
-    public void setPet(Pet pet) {
-        this.pet = pet;
+    public void setPetId(final int petId) {
+        this.petId = petId;
     }
 
 }
diff --git a/springboot-petclinic-server/src/main/java/org/springframework/samples/petclinic/domain/model/visit/VisitRepository.java b/springboot-petclinic-server/src/main/java/org/springframework/samples/petclinic/domain/model/visit/VisitRepository.java
index 6e8a91a7a2f4e48a82ca72e817f6c5943789bc7d..9c7aaf1940e30f71f25f503c93bab37cb26d112e 100644
--- a/springboot-petclinic-server/src/main/java/org/springframework/samples/petclinic/domain/model/visit/VisitRepository.java
+++ b/springboot-petclinic-server/src/main/java/org/springframework/samples/petclinic/domain/model/visit/VisitRepository.java
@@ -20,7 +20,6 @@ import java.util.List;
 import org.springframework.dao.DataAccessException;
 import org.springframework.data.repository.Repository;
 import org.springframework.samples.petclinic.support.jpa.BaseEntity;
-import org.springframework.samples.petclinic.domain.model.visit.Visit;
 
 /**
  * Repository class for <code>Visit</code> domain objects All method names are compliant with Spring Data naming
@@ -41,6 +40,6 @@ public interface VisitRepository extends Repository<Visit, Integer> {
      */
     void save(Visit visit) throws DataAccessException;
 
-    List<Visit> findByPetId(Integer petId);
+    List<Visit> findByPetId(int petId);
 
 }
diff --git a/springboot-petclinic-server/src/main/java/org/springframework/samples/petclinic/domain/model/visit/VisitService.java b/springboot-petclinic-server/src/main/java/org/springframework/samples/petclinic/domain/model/visit/VisitService.java
index 997534c1b97adb1708eee13a715f82fff6a83c6d..5717bc3dc4bf720b3b1449bca607843ab0170194 100644
--- a/springboot-petclinic-server/src/main/java/org/springframework/samples/petclinic/domain/model/visit/VisitService.java
+++ b/springboot-petclinic-server/src/main/java/org/springframework/samples/petclinic/domain/model/visit/VisitService.java
@@ -5,6 +5,8 @@ import org.springframework.dao.DataAccessException;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.util.List;
+
 /**
  * @author mszarlinski on 2016-10-30.
  */
@@ -22,4 +24,10 @@ public class VisitService {
     public void saveVisit(Visit visit) throws DataAccessException {
         visitRepository.save(visit);
     }
+
+    @Transactional(readOnly = true)
+    public List<Visit> findVisitsByPetId(final int petId) {
+        return visitRepository.findByPetId(petId);
+    }
+
 }
diff --git a/springboot-petclinic-server/src/test/java/org/springframework/samples/petclinic/domain/model/PetClinicTests.java b/springboot-petclinic-server/src/test/java/org/springframework/samples/petclinic/domain/model/PetClinicTests.java
index f2853755b4a965a02fb63dbc6cf48ec95bb6c4a0..bde60ff9b78aae4365650c2b360ee4405ab6d977 100644
--- a/springboot-petclinic-server/src/test/java/org/springframework/samples/petclinic/domain/model/PetClinicTests.java
+++ b/springboot-petclinic-server/src/test/java/org/springframework/samples/petclinic/domain/model/PetClinicTests.java
@@ -177,18 +177,14 @@ public class PetClinicTests {
     @Test
     @Transactional
     public void shouldAddNewVisitForPet() {
+        // given
         Pet pet7 = petService.findPetById(7);
-        int found = pet7.getVisits().size();
         Visit visit = new Visit();
-        pet7.addVisit(visit);
+        visit.setPetId(pet7.getId());
         visit.setDescription("test");
+        //when
         visitService.saveVisit(visit);
-        petService.savePet(pet7);
-
-        pet7 = petService.findPetById(7);
-        assertThat(pet7.getVisits().size()).isEqualTo(found + 1);
+        // then
         assertThat(visit.getId()).isNotNull();
     }
-
-
 }