@@ -233,31 +233,17 @@ protected CompletionStage<Void> entityIsPersistent(MergeEvent event, MergeContex
233
233
}
234
234
235
235
protected CompletionStage <Void > entityIsTransient (MergeEvent event , MergeContext copyCache ) {
236
-
237
236
LOG .trace ( "Merging transient instance" );
238
237
239
238
final Object entity = event .getEntity ();
240
239
final EventSource session = event .getSession ();
241
-
242
240
final String entityName = event .getEntityName ();
243
241
final EntityPersister persister = session .getEntityPersister ( entityName , entity );
244
-
245
242
final Object id = persister .hasIdentifierProperty ()
246
243
? persister .getIdentifier ( entity , session )
247
244
: null ;
248
245
249
- final Object copy ;
250
- final Object existingCopy = copyCache .get ( entity );
251
- if ( existingCopy != null ) {
252
- persister .setIdentifier ( copyCache .get ( entity ), id , session );
253
- copy = existingCopy ;
254
- }
255
- else {
256
- copy = session .instantiate ( persister , id );
257
-
258
- //before cascade!
259
- copyCache .put ( entity , copy , true );
260
- }
246
+ final Object copy = copyEntity ( copyCache , entity , session , persister , id );
261
247
262
248
// cascade first, so that all unsaved objects get their
263
249
// copy created before we actually copy
@@ -286,6 +272,20 @@ protected CompletionStage<Void> entityIsTransient(MergeEvent event, MergeContext
286
272
});
287
273
}
288
274
275
+ private static Object copyEntity (MergeContext copyCache , Object entity , EventSource session , EntityPersister persister , Object id ) {
276
+ final Object existingCopy = copyCache .get ( entity );
277
+ if ( existingCopy != null ) {
278
+ persister .setIdentifier ( copyCache .get ( entity ), id , session );
279
+ return existingCopy ;
280
+ }
281
+ else {
282
+ final Object copy = session .instantiate ( persister , id );
283
+ //before cascade!
284
+ copyCache .put ( entity , copy , true );
285
+ return copy ;
286
+ }
287
+ }
288
+
289
289
private static class CollectionVisitor extends WrapVisitor {
290
290
CollectionVisitor (Object entity , Object id , EventSource session ) {
291
291
super ( entity , id , session );
0 commit comments