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

    NoviceBeerConsumer beerConsumer = new NoviceBeerConsumer();

    try {
      beerConsumer.setName("Novice Beer Consumer");
      beerConsumer.setIQ(100);

      beerConsumer.getAcclaims().add(1);
      beerConsumer.getAcclaims().add(2);
      beerConsumer.getAcclaims().add(3);

      beerConsumer.getAwards().put(1, 1);
      beerConsumer.getAwards().put(2, 2);
      beerConsumer.getAwards().put(3, 3);

      beerConsumer.getDesignations().add("5");
      beerConsumer.getDesignations().add("4");
      beerConsumer.getDesignations().add("2");
      beerConsumer.getDesignations().add("3");
      beerConsumer.getDesignations().add("1");

      Record record1 = new Record();
      record1.setDescription("Slowest beer ever consumed - 10 hours");
      record1.setDate(Helper.dateFromYearMonthDate(2008, 1, 1));
      record1.setLocation(new Location("Paris", "France"));
      beerConsumer.getRecords().add(record1);

      Accredidation accredidation = new Accredidation();
      accredidation.setDetails("Superb, just superb!");
      Witness witness1 = new Witness();
      witness1.setName("Mickey Blue Eyes");
      accredidation.addWitness(witness1);
      Witness witness2 = new Witness();
      witness2.setName("Donny Trafalgo");
      accredidation.addWitness(witness2);
      beerConsumer.setAccredidation(accredidation);

      Committee committee1 = new Committee();
      committee1.setDescription("Moral labelling");
      beerConsumer.addCommittee(committee1);

      Committee committee2 = new Committee();
      committee2.setDescription("Crimes against beer");
      beerConsumer.addCommittee(committee2);

      Committee committee3 = new Committee();
      committee3.setDescription("BADD - Beers against drunk dorks");
      beerConsumer.addCommittee(committee3);

      em.persist(beerConsumer);
      m_noviceBeerConsumerId = beerConsumer.getId();
      commitTransaction(em);
    } catch (RuntimeException e) {
      if (isTransactionActive(em)) {
        rollbackTransaction(em);
      }

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

    closeEntityManager(em);

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