1919import org .hibernate .engine .internal .Collections ;
2020import org .hibernate .engine .jdbc .spi .JdbcCoordinator ;
2121import org .hibernate .engine .spi .ActionQueue ;
22- import org .hibernate .engine .spi .CascadingAction ;
2322import org .hibernate .engine .spi .CascadingActions ;
2423import org .hibernate .engine .spi .CollectionEntry ;
2524import org .hibernate .engine .spi .CollectionKey ;
@@ -106,29 +105,27 @@ protected void preFlush(EventSource session, PersistenceContext persistenceConte
106105 }
107106
108107 protected void logFlushResults (FlushEvent event ) {
109- if ( !LOG .isDebugEnabled () ) {
110- return ;
108+ if ( LOG .isDebugEnabled () ) {
109+ final EventSource session = event .getSession ();
110+ final PersistenceContext persistenceContext = session .getPersistenceContextInternal ();
111+ final ActionQueue actionQueue = session .getActionQueue ();
112+ LOG .debugf (
113+ "Flushed: %s insertions, %s updates, %s deletions to %s objects" ,
114+ actionQueue .numberOfInsertions (),
115+ actionQueue .numberOfUpdates (),
116+ actionQueue .numberOfDeletions (),
117+ persistenceContext .getNumberOfManagedEntities ()
118+ );
119+ LOG .debugf (
120+ "Flushed: %s (re)creations, %s updates, %s removals to %s collections" ,
121+ actionQueue .numberOfCollectionCreations (),
122+ actionQueue .numberOfCollectionUpdates (),
123+ actionQueue .numberOfCollectionRemovals (),
124+ persistenceContext .getCollectionEntriesSize ()
125+ );
126+ new EntityPrinter ( session .getFactory () )
127+ .logEntities ( persistenceContext .getEntityHoldersByKey ().entrySet () );
111128 }
112- final EventSource session = event .getSession ();
113- final PersistenceContext persistenceContext = session .getPersistenceContextInternal ();
114- final ActionQueue actionQueue = session .getActionQueue ();
115- LOG .debugf (
116- "Flushed: %s insertions, %s updates, %s deletions to %s objects" ,
117- actionQueue .numberOfInsertions (),
118- actionQueue .numberOfUpdates (),
119- actionQueue .numberOfDeletions (),
120- persistenceContext .getNumberOfManagedEntities ()
121- );
122- LOG .debugf (
123- "Flushed: %s (re)creations, %s updates, %s removals to %s collections" ,
124- actionQueue .numberOfCollectionCreations (),
125- actionQueue .numberOfCollectionUpdates (),
126- actionQueue .numberOfCollectionRemovals (),
127- persistenceContext .getCollectionEntriesSize ()
128- );
129- new EntityPrinter ( session .getFactory () ).toString (
130- persistenceContext .getEntityHoldersByKey ().entrySet ()
131- );
132129 }
133130
134131 /**
@@ -140,8 +137,8 @@ private void prepareEntityFlushes(EventSource session, PersistenceContext persis
140137
141138 LOG .debug ( "Processing flush-time cascades" );
142139
143- final PersistContext context = getContext ( session );
144- //safe from concurrent modification because of how concurrentEntries() is implemented on IdentityMap
140+ final PersistContext context = PersistContext . create ( );
141+ // safe from concurrent modification because of how concurrentEntries() is implemented on IdentityMap
145142 for ( Map .Entry <Object ,EntityEntry > me : persistenceContext .reentrantSafeEntityEntries () ) {
146143// for ( Map.Entry me : IdentityMap.concurrentEntries( persistenceContext.getEntityEntries() ) ) {
147144 final EntityEntry entry = me .getValue ();
@@ -150,6 +147,10 @@ private void prepareEntityFlushes(EventSource session, PersistenceContext persis
150147 }
151148 }
152149
150+ checkForTransientReferences ( session , persistenceContext );
151+ }
152+
153+ void checkForTransientReferences (EventSource session , PersistenceContext persistenceContext ) {
153154 // perform these checks after all cascade persist events have been
154155 // processed, so that all entities which will be persisted are
155156 // persistent when we do the check (I wonder if we could move this
@@ -181,21 +182,13 @@ private void cascadeOnFlush(EventSource session, EntityPersister persister, Obje
181182 final PersistenceContext persistenceContext = session .getPersistenceContextInternal ();
182183 persistenceContext .incrementCascadeLevel ();
183184 try {
184- Cascade .cascade ( getCascadingAction ( session ) , CascadePoint .BEFORE_FLUSH , session , persister , object , anything );
185+ Cascade .cascade ( CascadingActions . PERSIST_ON_FLUSH , CascadePoint .BEFORE_FLUSH , session , persister , object , anything );
185186 }
186187 finally {
187188 persistenceContext .decrementCascadeLevel ();
188189 }
189190 }
190191
191- protected PersistContext getContext (EventSource session ) {
192- return PersistContext .create ();
193- }
194-
195- protected CascadingAction <PersistContext > getCascadingAction (EventSource session ) {
196- return CascadingActions .PERSIST_ON_FLUSH ;
197- }
198-
199192 /**
200193 * Initialize the flags of the CollectionEntry, including the
201194 * dirty check.
0 commit comments