if (collection.hasDeferredChanges()) { Iterator iterator = collection.getAddedElements().iterator(); boolean cascade = isCascadePersist(); while (iterator.hasNext()) { Object nextObject = iterator.next(); Object cloneObjectCollection = getRealCollectionAttributeValueFromObject(object, uow); Object iterator = containerPolicy.iteratorFor(cloneObjectCollection); boolean cascade = isCascadePersist(); while (containerPolicy.hasNext(iterator)) { Object wrappedObject = containerPolicy.nextEntry(iterator, uow);
if (collection.hasDeferredChanges()) { Iterator iterator = collection.getAddedElements().iterator(); boolean cascade = isCascadePersist(); while (iterator.hasNext()) { Object nextObject = iterator.next(); Object cloneObjectCollection = getRealCollectionAttributeValueFromObject(object, uow); Object iterator = containerPolicy.iteratorFor(cloneObjectCollection); boolean cascade = isCascadePersist(); while (containerPolicy.hasNext(iterator)) { Object wrappedObject = containerPolicy.nextEntry(iterator, uow);
if (collection.hasDeferredChanges()) { Iterator iterator = collection.getAddedElements().iterator(); boolean cascade = isCascadePersist(); while (iterator.hasNext()) { Object nextObject = iterator.next(); Object cloneObjectCollection = getRealCollectionAttributeValueFromObject(object, uow); Object iterator = containerPolicy.iteratorFor(cloneObjectCollection); boolean cascade = isCascadePersist(); while (containerPolicy.hasNext(iterator)) { Object wrappedObject = containerPolicy.nextEntry(iterator, uow);
/** * INTERNAL: * Cascade registerNew for Create through mappings that require the cascade */ public void cascadeRegisterNewIfRequired(Object object, UnitOfWorkImpl uow, Map visitedObjects) { if (!isCascadePersist()) { return; } Object cloneAttribute = getAttributeValueFromObject(object); if ((cloneAttribute == null) || (!this.indirectionPolicy.objectIsInstantiated(cloneAttribute))) { return; } ContainerPolicy cp = this.containerPolicy; Object cloneObjectCollection = null; cloneObjectCollection = getRealCollectionAttributeValueFromObject(object, uow); Object cloneIter = cp.iteratorFor(cloneObjectCollection); // add private owned objects to uow list if mapping is a candidate and uow should discover new objects and the source object is new. boolean shouldAddPrivateOwnedObject = isCandidateForPrivateOwnedRemoval() && uow.shouldDiscoverNewObjects() && uow.isObjectNew(object); while (cp.hasNext(cloneIter)) { Object wrappedObject = cp.nextEntry(cloneIter, uow); Object nextObject = cp.unwrapIteratorResult(wrappedObject); if (shouldAddPrivateOwnedObject && nextObject != null) { uow.addPrivateOwnedObject(this, nextObject); } uow.registerNewObjectForPersist(nextObject, visitedObjects); cp.cascadeRegisterNewIfRequired(wrappedObject, uow, visitedObjects); } }
collection.setSavedWithParent(collectionMapping.isCascadePersist()); collection.setDeletedWithParent(collectionMapping.isCascadeRemove()); collection.setLoadedAtParentLoadTime(collectionMapping.isCascadeRefresh() && !collectionMapping.isLazy());