public void testHeinekenBeerConsumer() {
    EntityManager em = createEntityManager();
    beginTransaction(em);

    BeerConsumer initialBC = new BeerConsumer();
    int beerConsumerId = 0;

    try {
      Heineken heineken1 = new Heineken();
      heineken1.setAlcoholContent(5.0);

      Heineken heineken2 = new Heineken();
      heineken2.setAlcoholContent(5.0);

      Heineken heineken3 = new Heineken();
      heineken3.setAlcoholContent(5.0);

      initialBC.setName("Heineken Consumer");
      Calendar cal = Calendar.getInstance();
      cal.set(2008, 12, 12);
      initialBC.addHeinekenBeerToConsume(heineken1, cal.getTime());
      cal.set(2009, 1, 1);
      initialBC.addHeinekenBeerToConsume(heineken2, cal.getTime());
      cal.set(2009, 2, 2);
      initialBC.addHeinekenBeerToConsume(heineken3, cal.getTime());

      em.persist(initialBC);
      beerConsumerId = initialBC.getId();

      commitTransaction(em);
    } catch (RuntimeException e) {
      if (isTransactionActive(em)) {
        rollbackTransaction(em);
      }

      closeEntityManager(em);
      fail("An exception was caught during create operation: [" + e.getMessage() + "]");
    }

    closeEntityManager(em);

    clearCache();
    em = createEntityManager();
    BeerConsumer refreshedBC = em.find(BeerConsumer.class, beerConsumerId);
    assertTrue(
        "The beer consumer read back did not match the original",
        getServerSession().compareObjects(initialBC, refreshedBC));
  }