@Test
public
void test002() {
EntityManagerFactory emf =
null;
EntityManager em = null;
emf =
javax.persistence.Persistence.createEntityManagerFactory("testpu");
em =
emf.createEntityManager();
em.getTransaction().begin();
em.createNativeQuery("DELETE FROM ECLENTA_ENTB").executeUpdate();
em.createNativeQuery("DELETE FROM ECL295EntA").executeUpdate();
em.createNativeQuery("DELETE FROM ECL295EntB").executeUpdate();
em.getTransaction().commit();
em.close();
em =
emf.createEntityManager();
em.getTransaction().begin();
final int
entBCount = 10;
ECL295EntB[] entBArr = new ECL295EntB[entBCount];
for (int
i = 0; i < entBCount; i++) {
ECL295EntB entB = new ECL295EntB();
entB.setId(i+1);
entB.setStrData("Entity B-" + i);
em.persist(entB);
entBArr[i] = entB;
}
SecureRandom sr = new SecureRandom();
for (int
i = 0; i < 10; i++) {
ECL295EntA entA = new ECL295EntA();
entA.setId(i+1);
entA.setStrData("EntA-" + i);
StringBuffer sb = new StringBuffer();
for (int
j = 0; j < 200; j++) {
sb.append(sr.nextLong());sb.append(' ');
}
entA.setStringValue(sb.toString());
for (int
j = 0; j < entBCount; j++) {
entBArr[j].getEntACollection().put(entA.getStrData(),
entA);
}
em.persist(entA);
}
em.getTransaction().commit();
em.close();
emf.close();
emf =
javax.persistence.Persistence.createEntityManagerFactory("testpu");
em =
emf.createEntityManager();
Query q = em.createQuery("SELECT b from ECL295EntB b");
q.setHint(QueryHints.BATCH , "b.entACollection");
List<ECL295EntB>
resultSet = q.getResultList();
assertNotNull(resultSet);
ECL295EntB entB_find =
resultSet.get(0); //
em.find(ECL295EntB.class, 1);
assertNotNull(entB_find);
boolean containsTarget =
entB_find.getEntACollection().containsKey("EntA-1");
assertTrue(containsTarget);
assertEquals(10,
entB_find.getEntACollection().size());
}
...