package org.hibernate.envers.test.integration.onetomany.inverseToSuperclass; import org.hibernate.ejb.Ejb3Configuration; import org.hibernate.envers.test.AbstractEntityTest; import org.hibernate.envers.test.Priority; import org.junit.Test; import javax.persistence.EntityManager; import java.io.File; import java.net.URISyntaxException; import java.net.URL; import java.util.ArrayList; /** * @author Hern�n Chanfreau * */ public class OneToManyInverseToSuperclassTest extends AbstractEntityTest { private long m1_id; public void configure(Ejb3Configuration cfg) { try { URL url = Thread.currentThread().getContextClassLoader() .getResource( "mappings/oneToMany/inverseToSuperclass/mappings.hbm.xml"); cfg.addFile(new File(url.toURI())); } catch (URISyntaxException e) { throw new RuntimeException(e); } } @Test @Priority(10) public void initData() { EntityManager em = getEntityManager(); Master m1 = new Master(); DetailSubclass det1 = new DetailSubclass2(); DetailSubclass det2 = new DetailSubclass2(); // Revision 1 em.getTransaction().begin(); det1.setStr2("detail 1"); m1.setStr("master"); m1.setItems(new ArrayList<DetailSubclass>()); m1.getItems().add(det1); det1.setParent(m1); em.persist(m1); em.getTransaction().commit(); m1_id = m1.getId(); // Revision 2 em.getTransaction().begin(); m1 = em.find(Master.class, m1_id); det2.setStr2("detail 2"); det2.setParent(m1); m1.getItems().add(det2); em.getTransaction().commit(); // Revision 3 em.getTransaction().begin(); m1 = em.find(Master.class, m1_id); m1.setStr("new master"); det1 = m1.getItems().get(0); det1.setStr2("new detail"); DetailSubclass det3 = new DetailSubclass2(); det3.setStr2("detail 3"); det3.setParent(m1); m1.getItems().get(1).setParent(null); // m1.getItems().remove(1); m1.getItems().add(det3); em.persist(m1); em.getTransaction().commit(); // Revision 4 em.getTransaction().begin(); m1 = em.find(Master.class, m1_id); det1 = m1.getItems().get(0); det1.setParent(null); // m1.getItems().remove(det1); em.persist(m1); em.getTransaction().commit(); } @Test public void testHistoryExists() { Master rev1_1 = getAuditReader().find(Master.class, m1_id, 1); Master rev1_2 = getAuditReader().find(Master.class, m1_id, 2); Master rev1_3 = getAuditReader().find(Master.class, m1_id, 3); Master rev1_4 = getAuditReader().find(Master.class, m1_id, 4); assert (rev1_1 != null); assert (rev1_2 != null); assert (rev1_3 != null); assert (rev1_4 != null); } }