if ( child == null || ( loadedValue != null && child != loadedValue ) ) {
if (loadedValue == null) {
loadedValue = entry.getDatabaseValue((SessionImplementor) eventSource, propertyName, parent);
}
final EntityEntry valueEntry = eventSource.getPersistenceContext().getEntry( loadedValue );
if ( valueEntry != null ) {
final String entityName = valueEntry.getPersister().getEntityName();
if ( LOG.isTraceEnabled() ) {
final Serializable id = valueEntry.getPersister().getIdentifier( loadedValue, eventSource );
final String description = MessageHelper.infoString( entityName, id );
LOG.tracev( "Deleting orphaned entity instance: {0}", description );
}
if (type.isAssociationType() && ((AssociationType)type).getForeignKeyDirection().equals(
ForeignKeyDirection.FOREIGN_KEY_TO_PARENT )) {
eventSource.removeOrphanBeforeUpdates( entityName, loadedValue );
}
else {
eventSource.delete( entityName, loadedValue, isCascadeDeleteEnabled, new HashSet() );
}
}
}