@Override
  public List<Event> getChildrenBirths(Person person) {
    // get the birth records of the children of this parent
    List<Birth> birthRecords = new ArrayList<Birth>();
    em.getTransaction().begin();
    Query q = em.createQuery("select b from Birth b, IN(b.parents) p WHERE p.id = :idParam");
    q.setParameter("idParam", person.getId());

    birthRecords.addAll((Collection<? extends Birth>) q.getResultList());

    List<Event> childrenBirths = new ArrayList<Event>();
    for (Birth b : birthRecords) {
      if (b != null) {
        ChildRecord cr = new ChildRecord();
        cr.setEventDate(b.getEventDate());
        cr.setPerson(person);
        cr.setChild(b.getPerson());
        cr.setTown(b.getTown());
        cr.setState_province(b.getState_province());
        cr.setCountry(b.getCountry());
        childrenBirths.add(cr);
      }
    }
    em.getTransaction().commit();
    return childrenBirths;
  }
 @Override
 public void updateBirth(Birth b) {
   em.getTransaction().begin();
   Birth target = em.find(Birth.class, b.getId());
   target.setCountry(b.getCountry());
   target.setEventDate(b.getEventDate());
   target.setPerson(b.getPerson());
   target.setState_province(b.getState_province());
   target.setTown(b.getTown());
   target.setParents(b.getParents());
   em.merge(target);
   em.getTransaction().commit();
 }