/** * This is the root method called to start the iteration. */ public void startIterationOn(Object sourceObject) { if (getVisitedObjects().containsKey(sourceObject)) { return; } getVisitedObjects().put(sourceObject, sourceObject); setCurrentMapping(null); setCurrentDescriptor(getSession().getDescriptor(sourceObject)); iterate(sourceObject); // start the recursion if ((getCurrentDescriptor() != null) && (!shouldCascadeNoParts()) && !this.shouldBreak()) { iterateReferenceObjects(sourceObject); } }
/** * Iterate on the mapping's reference object and * recursively iterate on the reference object's * reference objects. * This is used for aggregate and aggregate collection mappings, which are not iterated on by default. */ public void iterateForAggregateMapping(Object aggregateObject, DatabaseMapping mapping, ClassDescriptor descriptor) { if (aggregateObject == null) { return; } setCurrentMapping(mapping); // aggregate descriptors are passed in because they could be part of an inheritance tree setCurrentDescriptor(descriptor); if (shouldIterateOnAggregates()) {// false by default internalIterateAggregateObject(aggregateObject); if (shouldBreak()) { setShouldBreak(false); return; } } iterateReferenceObjects(aggregateObject); }
iterateReferenceObjects(referenceObject); if(this.usesGroup) { this.currentGroup = currentGroupOriginal;
iterateReferenceObjects(referenceObject); if(this.usesGroup) { this.currentGroup = currentGroupOriginal;
iterateReferenceObjects(referenceObject);
iterateReferenceObjects(aggregateObject); if(this.usesGroup) { this.currentGroup = currentGroupOriginal;
iterateReferenceObjects(aggregateObject); if(this.usesGroup) { this.currentGroup = currentGroupOriginal;