示例#1
0
 /** Loads the {@link Visit} data for the supplied {@link Pet}. */
 private void loadVisits(JdbcPet pet) {
   final List<Visit> visits =
       this.simpleJdbcTemplate.query(
           "SELECT id, visit_date, description FROM visits WHERE pet_id=?",
           new ParameterizedRowMapper<Visit>() {
             public Visit mapRow(ResultSet rs, int row) throws SQLException {
               Visit visit = new Visit();
               visit.setId(rs.getInt("id"));
               visit.setDate(rs.getTimestamp("visit_date"));
               visit.setDescription(rs.getString("description"));
               return visit;
             }
           },
           pet.getId().intValue());
   for (Visit visit : visits) {
     pet.addVisit(visit);
   }
 }
  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;
  }