/** * INTERNAL: * Creates and returns a copy of this query. * @return A clone of this instance. */ @Override public Object clone() { final ReadAllQuery cloneQuery = (ReadAllQuery)super.clone(); // Don't use setters as that will trigger unprepare. cloneQuery.containerPolicy = containerPolicy.clone(cloneQuery); return cloneQuery; }
/** * INTERNAL: * Clone the query. */ @Override public Object clone() { ReadAllQuery cloneQuery = (ReadAllQuery)super.clone(); // Don't use setters as that will trigger unprepare cloneQuery.containerPolicy = this.containerPolicy.clone(cloneQuery); return cloneQuery; }
/** * INTERNAL: * Clone the query. */ public Object clone() { ReadAllQuery cloneQuery = (ReadAllQuery)super.clone(); // Don't use setters as that will trigger unprepare cloneQuery.containerPolicy = getContainerPolicy().clone(cloneQuery); return cloneQuery; }
/** * INTERNAL: * Check to see if a custom query should be used for this query. * This is done before the query is copied and prepared/executed. Value of {@code null} means there is none. * @param session Current session. * @param translationRow Database record. * @return Custom database query or {@code null} when custom database query is not set. */ @Override protected DatabaseQuery checkForCustomQuery(final AbstractSession session, final AbstractRecord translationRow) { final Boolean useCustomQuery = checkCustomQueryFlag(session, translationRow); checkDescriptor(session); ObjectLevelReadQuery customQuery; if (useCustomQuery != null && useCustomQuery.booleanValue()) { customQuery = getReadQuery(); if (this.accessors != null) { customQuery = (ObjectLevelReadQuery) customQuery.clone(); customQuery.setIsExecutionClone(true); customQuery.setAccessors(this.accessors); } } else { customQuery = null; } isCustomQueryUsed = useCustomQuery; return customQuery; }
/** * INTERNAL: * Clone the query, including its selection criteria. * <p> * Normally selection criteria are not cloned here as they are cloned * later on during prepare. */ public Object deepClone() { ObjectLevelReadQuery clone = (ObjectLevelReadQuery)clone(); if (getSelectionCriteria() != null) { clone.setSelectionCriteria((Expression)getSelectionCriteria().clone()); } else if (defaultBuilder != null) { clone.defaultBuilder = (ExpressionBuilder)defaultBuilder.clone(); } return clone; }
/** * INTERNAL: * Clone the query, including its selection criteria. * <p> * Normally selection criteria are not cloned here as they are cloned * later on during prepare. */ @Override public Object deepClone() { ObjectLevelReadQuery clone = (ObjectLevelReadQuery)clone(); if (getSelectionCriteria() != null) { clone.setSelectionCriteria((Expression)getSelectionCriteria().clone()); } if (defaultBuilder != null) { clone.defaultBuilder = (ExpressionBuilder)defaultBuilder.clone(); } return clone; }
/** * INTERNAL: * Clone the query, including its selection criteria. * <p> * Normally selection criteria are not cloned here as they are cloned * later on during prepare. */ @Override public Object deepClone() { ObjectLevelReadQuery clone = (ObjectLevelReadQuery)clone(); if (getSelectionCriteria() != null) { clone.setSelectionCriteria((Expression)getSelectionCriteria().clone()); } if (defaultBuilder != null) { clone.defaultBuilder = (ExpressionBuilder)defaultBuilder.clone(); } return clone; }
removeChildren(concreteDescriptor, uniqueClasses, subclasses); ObjectLevelReadQuery concreteQuery = (ObjectLevelReadQuery)query.clone(); concreteQuery.setReferenceClass(concreteClass); concreteQuery.setDescriptor(concreteDescriptor);
/** * INTERNAL: * There is a very special case where a query may be a bean-level * pessimistic locking query. * <p> * If that is so, only queries executed inside of a UnitOfWork should * have a locking clause. In the extremely rare case that we execute * a locking query outside of a UnitOfWork, must disable locking so that * we do not get a fetch out of sequence error. */ public DatabaseQuery prepareOutsideUnitOfWork(AbstractSession session) { // Implementation is complicated because: if locking refresh will be // auto set to true preventing cache hit. // Must prepare this query from scratch if outside uow but locking // Must not reprepare this query as a NO_LOCK, but create a clone first // Must not cloneAndUnPrepare unless really have to if (isLockQuery(session) && getLockingClause().isForUpdateOfClause()) { ObjectLevelReadQuery clone = (ObjectLevelReadQuery)clone(); clone.setIsExecutionClone(true); clone.dontAcquireLocks(); clone.setIsPrepared(false); clone.checkPrePrepare(session); return clone; } return this; }
/** * INTERNAL: * There is a very special case where a query may be a bean-level * pessimistic locking query. * <p> * If that is so, only queries executed inside of a UnitOfWork should * have a locking clause. In the extremely rare case that we execute * a locking query outside of a UnitOfWork, must disable locking so that * we do not get a fetch out of sequence error. */ public DatabaseQuery prepareOutsideUnitOfWork(AbstractSession session) { // Implementation is complicated because: if locking refresh will be // auto set to true preventing cache hit. // Must prepare this query from scratch if outside uow but locking // Must not reprepare this query as a NO_LOCK, but create a clone first // Must not cloneAndUnPrepare unless really have to if (isLockQuery(session) && getLockingClause().isForUpdateOfClause()) { ObjectLevelReadQuery clone = (ObjectLevelReadQuery)clone(); clone.setIsExecutionClone(true); clone.dontAcquireLocks(); clone.setIsPrepared(false); clone.checkPrePrepare(session); return clone; } return this; }
/** * INTERNAL: * There is a very special case where a query may be a bean-level * pessimistic locking query. * <p> * If that is so, only queries executed inside of a UnitOfWork should * have a locking clause. In the extremely rare case that we execute * a locking query outside of a UnitOfWork, must disable locking so that * we do not get a fetch out of sequence error. */ public DatabaseQuery prepareOutsideUnitOfWork(AbstractSession session) { // Implementation is complicated because: if locking refresh will be // auto set to true preventing cache hit. // Must prepare this query from scratch if outside uow but locking // Must not reprepare this query as a NO_LOCK, but create a clone first // Must not cloneAndUnPrepare unless really have to if (isLockQuery(session) && getLockingClause().isForUpdateOfClause()) { ObjectLevelReadQuery clone = (ObjectLevelReadQuery)clone(); clone.setIsExecutionClone(true); clone.dontAcquireLocks(); clone.setIsPrepared(false); clone.checkPrePrepare(session); return clone; } return this; }
if (joinManager.getJoinedMappingQueries_() != null) { nestedQuery = joinManager.getJoinedMappingQueries_().get(this); nestedQuery = (ObjectLevelReadQuery)nestedQuery.clone(); } else { nestedQuery = prepareNestedJoins(joinManager, sourceQuery, executionSession);
if (joinManager.getJoinedMappingQueries_() != null) { nestedQuery = joinManager.getJoinedMappingQueries_().get(this); nestedQuery = (ObjectLevelReadQuery)nestedQuery.clone(); } else { nestedQuery = prepareNestedJoins(joinManager, sourceQuery, executionSession);
if (joinManager.getJoinedMappingQueries_() != null) { nestedQuery = joinManager.getJoinedMappingQueries_().get(this); nestedQuery = (ObjectLevelReadQuery)nestedQuery.clone(); } else { nestedQuery = prepareNestedJoins(joinManager, sourceQuery, executionSession);
if ((objectQuery.isPartialAttribute(attributeName))) { nestedObjectQuery = (ObjectLevelReadQuery)objectQuery.clone(); if (nestedObjectQuery == objectQuery) { nestedObjectQuery = (ObjectLevelReadQuery)nestedObjectQuery.clone(); if (nestedObjectQuery == objectQuery) { nestedObjectQuery = (ObjectLevelReadQuery)nestedObjectQuery.clone();
/** * INTERNAL: * Select all rows from a abstract table descriptor. * This is accomplished by selecting for all of the concrete classes and then merging the rows. * This does not optimize using type select, as the type information is not known. * @return vector containing database rows. * @exception DatabaseException - an error has occurred on the database. */ protected Vector selectAllRowUsingCustomMultipleTableSubclassRead(ObjectLevelReadQuery query) throws DatabaseException { Vector rows = new Vector(); // CR#3701077, it must either have a filter only instances expression, or not have subclasses. // This method recurses, so even though this is only called when shouldReadSubclasses is true, it may be false for subclasses. if ((getOnlyInstancesExpression() != null) || (! shouldReadSubclasses())) { ObjectLevelReadQuery concreteQuery = (ObjectLevelReadQuery)query.clone(); concreteQuery.setReferenceClass(getDescriptor().getJavaClass()); concreteQuery.setDescriptor(getDescriptor()); Vector concreteRows = ((ExpressionQueryMechanism)concreteQuery.getQueryMechanism()).selectAllRowsFromConcreteTable(); rows = Helper.concatenateVectors(rows, concreteRows); } // Recursively collect all rows from all concrete children and their children. // If this descriptor did not have a child with its own table, then the concrete select // would have selected them all. if (hasMultipleTableChild() || !shouldReadSubclasses()) { for (ClassDescriptor concreteDescriptor : getChildDescriptors()) { Vector concreteRows = concreteDescriptor.getInheritancePolicy().selectAllRowUsingCustomMultipleTableSubclassRead(query); rows = Helper.concatenateVectors(rows, concreteRows); } } return rows; }
if ((objectQuery.isPartialAttribute(attributeName))) { nestedObjectQuery = (ObjectLevelReadQuery)objectQuery.clone(); if (nestedObjectQuery == objectQuery) { nestedObjectQuery = (ObjectLevelReadQuery)nestedObjectQuery.clone(); if (nestedObjectQuery == objectQuery) { nestedObjectQuery = (ObjectLevelReadQuery)nestedObjectQuery.clone();
/** * INTERNAL: * Select all rows from a abstract table descriptor. * This is accomplished by selecting for all of the concrete classes and then merging the rows. * This does not optimize using type select, as the type information is not known. * @return vector containing database rows. * @exception DatabaseException - an error has occurred on the database. */ protected Vector selectAllRowUsingCustomMultipleTableSubclassRead(ObjectLevelReadQuery query) throws DatabaseException { Vector rows = new Vector(); // CR#3701077, it must either have a filter only instances expression, or not have subclasses. // This method recurses, so even though this is only called when shouldReadSubclasses is true, it may be false for subclasses. if ((getOnlyInstancesExpression() != null) || (! shouldReadSubclasses())) { ObjectLevelReadQuery concreteQuery = (ObjectLevelReadQuery)query.clone(); concreteQuery.setReferenceClass(getDescriptor().getJavaClass()); concreteQuery.setDescriptor(getDescriptor()); Vector concreteRows = ((ExpressionQueryMechanism)concreteQuery.getQueryMechanism()).selectAllRowsFromConcreteTable(); rows = Helper.concatenateVectors(rows, concreteRows); } // Recursively collect all rows from all concrete children and their children. // If this descriptor did not have a child with its own table, then the concrete select // would have selected them all. if (hasMultipleTableChild() || !shouldReadSubclasses()) { for (ClassDescriptor concreteDescriptor : getChildDescriptors()) { Vector concreteRows = concreteDescriptor.getInheritancePolicy().selectAllRowUsingCustomMultipleTableSubclassRead(query); rows = Helper.concatenateVectors(rows, concreteRows); } } return rows; }