package org.hibernate.envers.test.integration.jta; import javax.persistence.EntityManager; import java.util.Arrays; import java.util.Map; import org.hibernate.envers.test.BaseEnversJPAFunctionalTestCase; import org.hibernate.envers.test.Priority; import org.hibernate.envers.test.entities.IntTestEntity; import org.junit.Assert; import org.junit.Test; import org.hibernate.testing.jta.TestingJtaBootstrap; import org.hibernate.testing.jta.TestingJtaPlatformImpl; /** * Same as {@link org.hibernate.envers.test.integration.basic.Simple}, but in a JTA environment. * @author Adam Warski (adam at warski dot org) */ public class JtaTransaction extends BaseEnversJPAFunctionalTestCase { private Integer id1; @Override protected Class<?>[] getAnnotatedClasses() { return new Class[]{IntTestEntity.class}; } @Override protected void addConfigOptions(Map options) { TestingJtaBootstrap.prepare(options); } @Test @Priority(10) public void initData() throws Exception { TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin(); EntityManager em; IntTestEntity ite; try { em = getEntityManager(); ite = new IntTestEntity(10); em.persist(ite); id1 = ite.getId(); } finally { TestingJtaPlatformImpl.tryCommit(); } em.close(); TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin(); try { em = getEntityManager(); ite = em.find(IntTestEntity.class, id1); ite.setNumber(20); } finally { TestingJtaPlatformImpl.tryCommit(); } em.close(); } @Test public void testRevisionsCounts() throws Exception { Assert.assertEquals(Arrays.asList(1, 2), getAuditReader().getRevisions(IntTestEntity.class, id1)); } @Test public void testHistoryOfId1() { IntTestEntity ver1 = new IntTestEntity(10, id1); IntTestEntity ver2 = new IntTestEntity(20, id1); Assert.assertEquals(ver1, getAuditReader().find(IntTestEntity.class, id1, 1)); Assert.assertEquals(ver2, getAuditReader().find(IntTestEntity.class, id1, 2)); } }