/* * 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.test.eviction; import org.hibernate.Session; import org.hibernate.testing.TestForIssue; import org.hibernate.testing.junit4.BaseCoreFunctionalTestCase; import org.junit.Test; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; /** * @author Steve Ebersole */ public class EvictionTest extends BaseCoreFunctionalTestCase { @Override protected Class<?>[] getAnnotatedClasses() { return new Class[] { IsolatedEvictableEntity.class }; } @Test @TestForIssue( jiraKey = "HHH-7912" ) public void testNormalUsage() { Session session = openSession(); session.beginTransaction(); session.save( new IsolatedEvictableEntity( 1 ) ); session.getTransaction().commit(); session.close(); session = openSession(); session.beginTransaction(); IsolatedEvictableEntity entity = (IsolatedEvictableEntity) session.get( IsolatedEvictableEntity.class, 1 ); assertTrue( session.contains( entity ) ); session.evict( entity ); assertFalse( session.contains( entity ) ); session.getTransaction().commit(); session.close(); session = openSession(); session.beginTransaction(); session.delete( entity ); session.getTransaction().commit(); session.close(); } @Test @TestForIssue( jiraKey = "HHH-7912" ) public void testEvictingNull() { Session session = openSession(); session.beginTransaction(); try { session.evict( null ); fail( "Expecting evict(null) to throw NPE" ); } catch (NullPointerException expected) { } session.getTransaction().commit(); session.close(); } @Test @TestForIssue( jiraKey = "HHH-7912" ) public void testEvictingTransientEntity() { Session session = openSession(); session.beginTransaction(); session.evict( new IsolatedEvictableEntity( 1 ) ); session.getTransaction().commit(); session.close(); } @Test @TestForIssue( jiraKey = "HHH-7912" ) public void testEvictingDetachedEntity() { Session session = openSession(); session.beginTransaction(); session.save( new IsolatedEvictableEntity( 1 ) ); session.getTransaction().commit(); session.close(); session = openSession(); session.beginTransaction(); IsolatedEvictableEntity entity = (IsolatedEvictableEntity) session.get( IsolatedEvictableEntity.class, 1 ); assertTrue( session.contains( entity ) ); // detach the entity session.evict( entity ); assertFalse( session.contains( entity ) ); // evict it again the entity session.evict( entity ); assertFalse( session.contains( entity ) ); session.getTransaction().commit(); session.close(); session = openSession(); session.beginTransaction(); session.delete( entity ); session.getTransaction().commit(); session.close(); } @Test @TestForIssue( jiraKey = "HHH-7912" ) public void testEvictingNonEntity() { Session session = openSession(); session.beginTransaction(); try { session.evict( new EvictionTest() ); fail( "Expecting evict(non-entity) to throw IAE" ); } catch (IllegalArgumentException expected) { } session.getTransaction().commit(); session.close(); } }