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

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

    try {
      Becks becks1 = new Becks();
      becks1.setAlcoholContent(5.1);
      BecksTag becksTag1 = new BecksTag();
      becksTag1.setCallNumber("0A.789");
      em.persist(becksTag1);

      Becks becks2 = new Becks();
      becks2.setAlcoholContent(5.1);
      BecksTag becksTag2 = new BecksTag();
      becksTag2.setCallNumber("BX.521");
      em.persist(becksTag2);

      Becks becks3 = new Becks();
      becks3.setAlcoholContent(5.1);
      BecksTag becksTag3 = new BecksTag();
      becksTag3.setCallNumber("UY.429");
      em.persist(becksTag3);

      initialBC.setName("Becks Consumer");
      initialBC.addBecksBeerToConsume(becks1, becksTag1);
      initialBC.addBecksBeerToConsume(becks2, becksTag2);
      initialBC.addBecksBeerToConsume(becks3, becksTag3);

      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));
  }