@Test public void testDetach() { doInHibernate( this::sessionFactory, s -> { Parent parent = s.find( Parent.class, parentID ); assertThat( parent, notNullValue() ); assertThat( parent, not( instanceOf( HibernateProxy.class ) ) ); assertFalse( isPropertyInitialized( parent, "children" ) ); checkDirtyTracking( parent ); s.detach( parent ); s.flush(); } ); }
@Test public void testDetachProxy() { doInHibernate( this::sessionFactory, s -> { Parent parent = s.getReference( Parent.class, parentID ); checkDirtyTracking( parent ); s.detach( parent ); s.flush(); } ); }
s.detach( parent ); s.byId( "SimpleEntity" ).load( 1L ); s.update( parent );
s.detach( parent ); s.find( SimpleEntity.class, 1L ); s.update( parent );
session.detach( p ); assertTrue( triggerableQueuedOperationWhenDetachFromSession.wasTriggered() ); assertEquals(
session.detach( p ); assertTrue( triggerableQueuedOperationWhenDetachFromSession.wasTriggered() ); assertEquals(
@Override public void detach(Object entity) { delegate.detach(entity); }
@Override public void detach(Object pO) { initSession(); session.detach(pO); }
@Override public void detach(Object pO) { getSessionLocal().detach(pO); }
@Override public void detach(Object pO) { initSession(); session.detach(pO); }
@Override public void detach(final Object entity) { getWrappedSession().detach(entity); }
@Override public void detach(Object pO) { getSessionLocal().detach(pO); }
@Test public void detachUpdateMergeOnCascade() { String festivalName = "Sziget 2018"; inTransaction( session -> { Party party = new Party( 4, ARTIST_1, new Date(), "Budapest" ); Festival festival = new Festival( festivalName ); festival.add( party ); session.persist( festival ); } ); inTransaction( session -> { Festival festival = session.load( Festival.class, festivalName ); Party party = festival.getParties().get( 0 ); assertEquals( ARTIST_1, party.getName() ); // detach parent - update - merge parent session.detach( festival ); party.setName( ARTIST_2 ); session.merge( festival ); } ); inTransaction( session -> { Festival festival = session.load( Festival.class, festivalName ); Party party = festival.getParties().get( 0 ); assertEquals( ARTIST_2, party.getName() ); } ); deleteAll( Festival.class, festivalName ); }
@Test public void detachUpdateMerge() { inTransaction( session -> { Party party = new Party( 1, ARTIST_1, new Date(), "Budapest" ); session.persist( party ); } ); inTransaction( session -> { Party party = session.load( Party.class, 1 ); assertEquals( ARTIST_1, party.getName() ); // detach - update - merge session.detach( party ); party.setName( ARTIST_2 ); session.merge( party ); } ); inTransaction( session -> { Party party = session.load( Party.class, 1 ); assertEquals( ARTIST_2, party.getName() ); } ); deleteAll( Party.class, 1 ); }