HHH-13453 Optimise CascadingActions for the most likely case
This commit is contained in:
parent
cf1b7c3c12
commit
2ea0505e47
|
@ -369,21 +369,20 @@ public class CascadingActions {
|
|||
int propertyIndex) {
|
||||
if ( propertyType.isEntityType() ) {
|
||||
Object child = persister.getPropertyValue( parent, propertyIndex );
|
||||
String childEntityName = ((EntityType) propertyType).getAssociatedEntityName( session.getFactory() );
|
||||
|
||||
if ( child != null
|
||||
&& !isInManagedState( child, session )
|
||||
&& !(child instanceof HibernateProxy) //a proxy cannot be transient and it breaks ForeignKeys.isTransient
|
||||
&& ForeignKeys.isTransient( childEntityName, child, null, session ) ) {
|
||||
String parentEntityName = persister.getEntityName();
|
||||
String propertyName = persister.getPropertyNames()[propertyIndex];
|
||||
throw new TransientPropertyValueException(
|
||||
&& !(child instanceof HibernateProxy) ) { //a proxy cannot be transient and it breaks ForeignKeys.isTransient
|
||||
final String childEntityName = ((EntityType) propertyType).getAssociatedEntityName(session.getFactory());
|
||||
if (ForeignKeys.isTransient(childEntityName, child, null, session)) {
|
||||
String parentEntityName = persister.getEntityName();
|
||||
String propertyName = persister.getPropertyNames()[propertyIndex];
|
||||
throw new TransientPropertyValueException(
|
||||
"object references an unsaved transient instance - save the transient instance before flushing",
|
||||
childEntityName,
|
||||
parentEntityName,
|
||||
propertyName
|
||||
);
|
||||
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue