@Override public void evict(final Object entity) throws DataAccessException { executeWithNativeSession(session -> { session.evict(entity); return null; }); }
public void doAfterTransactionCompletion(boolean success, SharedSessionContractImplementor sessionImplementor) { if ( !sessionImplementor.isClosed() ) { try { ( (Session) sessionImplementor ).evict( data ); } catch ( HibernateException ignore ) { } } } }
@Override public void evict(final Object entity) throws DataAccessException { executeWithNativeSession(session -> { session.evict(entity); return null; }); }
@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 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 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(); }
@Test public void testUpdateAfterEvict() { Session s = openSession(); s.beginTransaction(); Parent p = new Parent( "p" ); s.save( p ); s.getTransaction().commit(); s.close(); s = openSession(); s.beginTransaction(); p = ( Parent ) s.load( Parent.class, "p" ); // evict... s.evict( p ); // now try to reattach... s.update( p ); s.getTransaction().commit(); s.close(); s = openSession(); s.beginTransaction(); s.delete( p ); s.getTransaction().commit(); s.close(); }
feeList.remove(1); s.flush(); s.evict(b); s.refresh(b); assertTrue( b.getFees().size()==3 );
assertEquals( 1, mouth.teeth.size() ); tooth = mouth.teeth.iterator().next(); s.evict( mouth ); assertFalse( s.contains( tooth ) ); tx.commit();
Parent p = null; for (Iterator it = s.createQuery( "from Parent" ).iterate(); it.hasNext(); ) { if ( p != null) { s.evict(p); } p = (Parent) it.next(); assertEquals( 1, p.getChildren().size() );
Parent p = (Parent) it.next(); assertEquals( 1, p.getChildren().size() ); s.evict(p);
@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 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 public void testRemoveContains() throws Exception { Session s = openSession(); s.beginTransaction(); Baz baz = new Baz(); baz.setDefaults(); s.save( baz ); s.flush(); assertTrue( s.contains(baz) ); s.evict( baz ); assertFalse( s.contains(baz) ); Baz baz2 = (Baz) s.load( Baz.class, baz.getCode() ); assertFalse( baz == baz2 ); s.delete(baz2); s.getTransaction().commit(); s.close(); }
@Test public void testDetachedSetReadOnlyAfterEvictViaLazyInitializer() { DataPoint dpOrig = createDataPoint( CacheMode.IGNORE ); Session s = openSession(); s.setCacheMode(CacheMode.IGNORE); s.beginTransaction(); DataPoint dp = ( DataPoint ) s.load( DataPoint.class, new Long( dpOrig.getId() ) ); assertTrue( dp instanceof HibernateProxy ); assertFalse( Hibernate.isInitialized( dp ) ); checkReadOnly( s, dp, false ); s.evict( dp ); assertFalse( s.contains( dp ) ); assertNull( ( ( HibernateProxy ) dp ).getHibernateLazyInitializer().getSession() ); try { ( ( HibernateProxy ) dp ).getHibernateLazyInitializer().setReadOnly( true ); fail( "should have failed because proxy was detached" ); } catch ( TransientObjectException ex) { // expected assertFalse( ( ( HibernateProxy ) dp ).getHibernateLazyInitializer().isReadOnlySettingAvailable() ); } finally { s.delete( dp ); s.getTransaction().commit(); s.close(); } }
@Test public void testDetachedIsReadOnlyAfterEvictViaSession() { DataPoint dpOrig = createDataPoint( CacheMode.IGNORE ); Session s = openSession(); s.setCacheMode(CacheMode.IGNORE); s.beginTransaction(); DataPoint dp = ( DataPoint ) s.load( DataPoint.class, new Long( dpOrig.getId() ) ); assertTrue( dp instanceof HibernateProxy ); assertFalse( Hibernate.isInitialized( dp ) ); checkReadOnly( s, dp, false ); assertTrue( s.contains( dp ) ); s.evict( dp ); assertFalse( s.contains( dp ) ); assertNull( ( ( HibernateProxy ) dp ).getHibernateLazyInitializer().getSession() ); try { s.isReadOnly( dp ); fail( "should have failed because proxy was detached" ); } catch ( TransientObjectException ex) { // expected assertFalse( ( ( HibernateProxy ) dp ).getHibernateLazyInitializer().isReadOnlySettingAvailable() ); } finally { s.delete( dp ); s.getTransaction().commit(); s.close(); } }
@Test public void testDetachedIsReadOnlyAfterEvictViaLazyInitializer() { DataPoint dpOrig = createDataPoint( CacheMode.IGNORE ); Session s = openSession(); s.setCacheMode(CacheMode.IGNORE); s.beginTransaction(); DataPoint dp = ( DataPoint ) s.load( DataPoint.class, new Long( dpOrig.getId() ) ); assertTrue( dp instanceof HibernateProxy ); assertFalse( Hibernate.isInitialized( dp ) ); checkReadOnly( s, dp, false ); s.evict( dp ); assertFalse( s.contains( dp ) ); assertNull( ( ( HibernateProxy ) dp ).getHibernateLazyInitializer().getSession() ); try { ( ( HibernateProxy ) dp ).getHibernateLazyInitializer().isReadOnly(); fail( "should have failed because proxy was detached" ); } catch ( TransientObjectException ex) { // expected assertFalse( ( ( HibernateProxy ) dp ).getHibernateLazyInitializer().isReadOnlySettingAvailable() ); } finally { s.delete( dp ); s.getTransaction().commit(); s.close(); } }
assertTrue( Hibernate.isInitialized( dp ) ); assertEquals( "changed", dp.getDescription() ); s.evict( dp ); assertFalse( s.contains( dp ) ); s.update( dp );
@Test public void testDetachedSetReadOnlyAfterEvictViaSession() { DataPoint dpOrig = createDataPoint( CacheMode.IGNORE ); Session s = openSession(); s.setCacheMode(CacheMode.IGNORE); s.beginTransaction(); DataPoint dp = ( DataPoint ) s.load( DataPoint.class, new Long( dpOrig.getId() ) ); assertTrue( dp instanceof HibernateProxy ); assertFalse( Hibernate.isInitialized( dp ) ); checkReadOnly( s, dp, false ); assertTrue( s.contains( dp ) ); s.evict( dp ); assertFalse( s.contains( dp ) ); assertNull( ( ( HibernateProxy ) dp ).getHibernateLazyInitializer().getSession() ); try { s.setReadOnly( dp, true ); fail( "should have failed because proxy was detached" ); } catch ( TransientObjectException ex) { // expected assertFalse( ( ( HibernateProxy ) dp ).getHibernateLazyInitializer().isReadOnlySettingAvailable() ); } finally { s.delete( dp ); s.getTransaction().commit(); s.close(); } }