}
private void complexCmpText() throws Exception {
beginTx();
ComplexCmpBean complexCmpBean = new ComplexCmpBean_Subclass();
complexCmpBean.ejbCreateObject("Joe Blow");
assertFalse(entityManager.contains(complexCmpBean));
entityManager.persist(complexCmpBean);
// extract primary key seems to require a flush followed by a merge
entityManager.flush();
complexCmpBean = entityManager.merge(complexCmpBean);
assertTrue(entityManager.contains(complexCmpBean));
commitTx();
beginTx();
complexCmpBean = new ComplexCmpBean_Subclass();
complexCmpBean.ejbCreateObject("Lloyd Dobler");
assertFalse(entityManager.contains(complexCmpBean));
entityManager.persist(complexCmpBean);
// extract primary key seems to require a flush followed by a merge
entityManager.flush();
complexCmpBean = entityManager.merge(complexCmpBean);
assertTrue(entityManager.contains(complexCmpBean));
commitTx();
beginTx();
final ComplexCmpBean joe = (ComplexCmpBean) entityManager.createQuery("select e from ComplexCmpBean_Subclass e where e.firstName='Joe'").getSingleResult();
assertTrue(entityManager.contains(joe));
assertEquals(joe.getFirstName(), "Joe");
assertEquals(joe.getLastName(), "Blow");
final ComplexCmpBean lloyd = (ComplexCmpBean) entityManager.createQuery("select e from ComplexCmpBean_Subclass e where e.firstName='Lloyd'").getSingleResult();
assertTrue(entityManager.contains(lloyd));
assertEquals(lloyd.getFirstName(), "Lloyd");
assertEquals(lloyd.getLastName(), "Dobler");
commitTx();
}