/* * 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.proxy; import java.util.Arrays; import java.util.List; import org.hibernate.envers.test.BaseEnversFunctionalTestCase; import org.hibernate.envers.test.Priority; import org.hibernate.envers.test.entities.StrTestEntity; import org.hibernate.testing.TestForIssue; import org.junit.Assert; import org.junit.Test; /** * @author Lukasz Antoniak (lukasz dot antoniak at gmail dot com) */ public class QueryingWithProxyObjectTest extends BaseEnversFunctionalTestCase { private Integer id = null; @Override protected Class<?>[] getAnnotatedClasses() { return new Class[] {StrTestEntity.class}; } @Test @Priority(10) public void initData() { // Revision 1 getSession().getTransaction().begin(); StrTestEntity ste = new StrTestEntity( "data" ); getSession().persist( ste ); getSession().getTransaction().commit(); id = ste.getId(); getSession().close(); } @Test @TestForIssue(jiraKey = "HHH-4760") @SuppressWarnings("unchecked") public void testQueryingWithProxyObject() { StrTestEntity originalSte = new StrTestEntity( "data", id ); // Load the proxy instance StrTestEntity proxySte = (StrTestEntity) getSession().load( StrTestEntity.class, id ); Assert.assertTrue( getAuditReader().isEntityClassAudited( proxySte.getClass() ) ); StrTestEntity ste = getAuditReader().find( proxySte.getClass(), proxySte.getId(), 1 ); Assert.assertEquals( originalSte, ste ); List<Number> revisions = getAuditReader().getRevisions( proxySte.getClass(), proxySte.getId() ); Assert.assertEquals( Arrays.asList( 1 ), revisions ); List<StrTestEntity> entities = getAuditReader().createQuery() .forEntitiesAtRevision( proxySte.getClass(), 1 ) .getResultList(); Assert.assertEquals( Arrays.asList( originalSte ), entities ); ste = (StrTestEntity) getAuditReader().createQuery() .forRevisionsOfEntity( proxySte.getClass(), true, false ) .getSingleResult(); Assert.assertEquals( originalSte, ste ); ste = (StrTestEntity) getAuditReader().createQuery() .forEntitiesModifiedAtRevision( proxySte.getClass(), 1 ) .getSingleResult(); Assert.assertEquals( originalSte, ste ); } }