/** * INTERNAL: * Compare the attributes belonging to this mapping for the objects. */ public boolean compareObjects(Object firstObject, Object secondObject, AbstractSession session) { if (isPrivateOwned()) { return compareObjectsWithPrivateOwned(firstObject, secondObject, session); } else { return compareObjectsWithoutPrivateOwned(firstObject, secondObject, session); } }
/** * INTERNAL: * Returns true only if the object is scheduled for deletion. */ protected boolean shouldObjectDeleteCascadeToPart(WriteObjectQuery query, Object object) { return (isPrivateOwned() || query.shouldCascadeAllParts() || query.shouldDependentObjectBeDeleted(object)); }
/** * INTERNAL: * Returns true if the merge should cascade to the mappings reference's parts. */ public boolean shouldMergeCascadeParts(MergeManager mergeManager) { return ((mergeManager.shouldCascadeByMapping() && this.isCascadeMerge()) || (mergeManager.shouldCascadeAllParts()) || (mergeManager.shouldCascadePrivateParts() && isPrivateOwned())); }
/** * Returns true if any process leading to object modification should also affect its parts * Usually used by write, insert and update. */ protected boolean shouldObjectModifyCascadeToParts(ObjectLevelModifyQuery query) { if (isReadOnly()) { return false; } if (isPrivateOwned()) { return true; } // Only cascade dependents writes in uow. if (query.shouldCascadeOnlyDependentParts()) { return hasConstraintDependency(); } return query.shouldCascadeAllParts(); }
/** * INTERNAL: * Return whether any process leading to object deletion should also affect its parts. * Used in preDelete. Note that foreign key dependencies are reversed for deletes: * The relationship side having the foreign key must be deleted before the other side is removed. */ protected boolean shouldObjectModifyCascadeToPartsForPreDelete(ObjectLevelModifyQuery query) { if (isReadOnly()) { return false; } // Always cascade for privately-owned parts if (isPrivateOwned()) { return true; } // Foreign key dependencies are reversed for deletes if (query.shouldCascadeOnlyDependentParts()) { return !hasConstraintDependency(); } return query.shouldCascadeAllParts(); }
/** * INTERNAL * Return true if the refresh shoud refresh on this mapping or not. */ protected ReadObjectQuery buildCascadeQuery(MergeManager mergeManager) { ReadObjectQuery cascadeQuery = new ReadObjectQuery(); if (mergeManager.shouldCascadeAllParts()) { cascadeQuery.cascadeAllParts(); cascadeQuery.refreshIdentityMapResult(); } if (mergeManager.shouldCascadePrivateParts() && getForeignReferenceMapping().isPrivateOwned()) { cascadeQuery.cascadePrivateParts(); cascadeQuery.refreshIdentityMapResult(); } return cascadeQuery; }