public void loadPetsAndVisits(final Owner owner) {
   Map<String, Object> params = new HashMap<String, Object>();
   params.put("id", owner.getId().intValue());
   final List<JdbcPet> pets =
       this.namedParameterJdbcTemplate.query(
           "SELECT id, name, birth_date, type_id, owner_id FROM pets WHERE owner_id=:id",
           params,
           new JdbcPetRowMapper());
   for (JdbcPet pet : pets) {
     owner.addPet(pet);
     pet.setType(EntityUtils.getById(getPetTypes(), PetType.class, pet.getTypeId()));
     //            List<Visit> visits = this.visitRepository.findByPetId(pet.getId());
     //            for (Visit visit : visits) {
     //                pet.addVisit(visit);
     //            }
   }
 }
 @Test
 @Transactional
 public void insertPet() {
   Owner owner6 = this.clinicService.findOwnerById(6);
   int found = owner6.getPets().size();
   Pet pet = new Pet();
   pet.setName("bowser");
   Collection<PetType> types = this.clinicService.findPetTypes();
   pet.setType(EntityUtils.getById(types, PetType.class, 2));
   pet.setBirthDate(new DateTime());
   owner6.addPet(pet);
   assertEquals(found + 1, owner6.getPets().size());
   // both storePet and storeOwner are necessary to cover all ORM tools
   this.clinicService.savePet(pet);
   this.clinicService.saveOwner(owner6);
   owner6 = this.clinicService.findOwnerById(6);
   assertEquals(found + 1, owner6.getPets().size());
   assertNotNull("Pet Id should have been generated", pet.getId());
 }
  @Override
  public Pet findById(int id) throws DataAccessException {
    JdbcPet pet;
    try {
      Map<String, Object> params = new HashMap<String, Object>();
      params.put("id", id);
      pet =
          this.namedParameterJdbcTemplate.queryForObject(
              "SELECT id, name, birth_date, type_id, owner_id FROM pets WHERE id=:id",
              params,
              new JdbcPetRowMapper());
    } catch (EmptyResultDataAccessException ex) {
      throw new ObjectRetrievalFailureException(Pet.class, new Integer(id));
    }
    Owner owner = this.ownerRepository.findById(pet.getOwnerId());
    owner.addPet(pet);
    pet.setType(EntityUtils.getById(findPetTypes(), PetType.class, pet.getTypeId()));

    List<Visit> visits = this.visitRepository.findByPetId(pet.getId());
    for (Visit visit : visits) {
      pet.addVisit(visit);
    }
    return pet;
  }