/* * Hibernate, Relational Persistence for Idiomatic Java * * License: GNU Lesser General Public License (LGPL), version 2.1 or later. * See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. */ package org.hibernate.envers.test.integration.onetomany.inverseToSuperclass; import java.util.ArrayList; import javax.persistence.EntityManager; import org.hibernate.envers.test.BaseEnversJPAFunctionalTestCase; import org.hibernate.envers.test.Priority; import org.junit.Test; /** * @author Hern�n Chanfreau */ public class OneToManyInverseToSuperclassTest extends BaseEnversJPAFunctionalTestCase { private long m1_id; @Override protected String[] getMappings() { return new String[] {"mappings/oneToMany/inverseToSuperclass/mappings.hbm.xml"}; } @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); } }