/* * 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.components.mappedsuperclass; import java.util.List; import javax.persistence.EntityManager; import javax.persistence.EntityTransaction; import org.hibernate.envers.AuditReader; import org.hibernate.envers.AuditReaderFactory; import org.hibernate.envers.test.BaseEnversJPAFunctionalTestCase; import org.hibernate.envers.test.Priority; import org.hibernate.testing.TestForIssue; import org.junit.Assert; import org.junit.Test; /** * @author Jakob Braeuchi. * @author Gail Badner */ @TestForIssue(jiraKey = "HHH-9193") public class EmbeddableWithNoDeclaredDataTest extends BaseEnversJPAFunctionalTestCase { private long id; @Override protected Class<?>[] getAnnotatedClasses() { return new Class[] { EntityWithEmbeddableWithNoDeclaredData.class, AbstractEmbeddable.class, EmbeddableWithNoDeclaredData.class }; } @Test @Priority(10) public void initData() { EntityManager em = getEntityManager(); EntityWithEmbeddableWithNoDeclaredData entity = new EntityWithEmbeddableWithNoDeclaredData(); entity.setName( "Entity 1" ); entity.setValue( new EmbeddableWithNoDeclaredData( 84 ) ); EntityTransaction tx = em.getTransaction(); tx.begin(); em.persist( entity ); tx.commit(); em.close(); id = entity.getId(); } @Test public void testEmbeddableThatExtendsMappedSuperclass() { // Reload and Compare Revision EntityManager em = getEntityManager(); em.getTransaction().begin(); EntityWithEmbeddableWithNoDeclaredData entityLoaded = em.find( EntityWithEmbeddableWithNoDeclaredData.class, id ); AuditReader reader = AuditReaderFactory.get( em ); List<Number> revs = reader.getRevisions( EntityWithEmbeddableWithNoDeclaredData.class, id ); Assert.assertEquals( 1, revs.size() ); EntityWithEmbeddableWithNoDeclaredData entityRev1 = reader.find( EntityWithEmbeddableWithNoDeclaredData.class, id, revs.get( 0 ) ); em.getTransaction().commit(); Assert.assertEquals( entityLoaded.getName(), entityRev1.getName() ); // value should be null because there is no data in EmbeddableWithNoDeclaredData // and the fields in AbstractEmbeddable should not be audited. Assert.assertNull( entityRev1.getValue() ); } }