public T createAndSave() { Session session = sessions.openSession(); Transaction transaction = session.beginTransaction(); Object cloud = null; if (polar) { PolarCloud polarCloud = new PolarCloud(); polarCloud.setLength(length); for (String description : producedSnowflakes) { SnowFlake sf = new SnowFlake(); sf.setDescription(description); session.save(sf); polarCloud.getProducedSnowFlakes().add(sf); } for (String description : backupSnowflakes) { SnowFlake sf = new SnowFlake(); sf.setDescription(description); session.save(sf); polarCloud.getBackupSnowFlakes().add(sf); } cloud = polarCloud; } else { AnnotatedCloud annotatedCloud = new AnnotatedCloud(); annotatedCloud.setLength(length); for (String description : producedSnowflakes) { SnowFlake sf = new SnowFlake(); sf.setDescription(description); session.save(sf); annotatedCloud.getProducedSnowFlakes().add(sf); } for (String description : backupSnowflakes) { SnowFlake sf = new SnowFlake(); sf.setDescription(description); session.save(sf); annotatedCloud.getBackupSnowFlakes().add(sf); } cloud = annotatedCloud; } session.persist(cloud); transaction.commit(); session.close(); @SuppressWarnings("unchecked") T result = (T) cloud; return result; }
@After public void removeCloudAndSnowflakes() { Session session = sessions.openSession(); Transaction transaction = session.beginTransaction(); if (cloud != null) { AnnotatedCloud cloudToDelete = (AnnotatedCloud) session.get(AnnotatedCloud.class, cloud.getId()); for (SnowFlake current : cloudToDelete.getProducedSnowFlakes()) { session.delete(current); } for (SnowFlake current : cloudToDelete.getBackupSnowFlakes()) { session.delete(current); } session.delete(cloudToDelete); } if (polarCloud != null) { PolarCloud cloudToDelete = (PolarCloud) session.get(PolarCloud.class, polarCloud.getId()); for (SnowFlake current : cloudToDelete.getProducedSnowFlakes()) { session.delete(current); } for (SnowFlake current : cloudToDelete.getBackupSnowFlakes()) { session.delete(current); } session.delete(cloudToDelete); } transaction.commit(); session.close(); assertThat(TestHelper.getNumberOfEntities(sessions)).isEqualTo(0); assertThat(TestHelper.getNumberOfAssociations(sessions)).isEqualTo(0); sessions.close(); }