/** * INTERNAL: * Translate argumentValues into a database row. */ public AbstractRecord rowFromArguments(List argumentValues) throws QueryException { List<DatabaseField> argumentFields = this.argumentFields; // PERF: argumentFields are set in prepare, but need to be built if query is not prepared. if (!isPrepared() || (argumentFields == null)) { argumentFields = buildArgumentFields(); } if (argumentFields.size() != argumentValues.size()) { throw QueryException.argumentSizeMismatchInQueryAndQueryDefinition(this); } int argumentsSize = argumentFields.size(); AbstractRecord row = new DatabaseRecord(argumentsSize); for (int index = 0; index < argumentsSize; index++) { row.put(argumentFields.get(index), argumentValues.get(index)); } return row; }
/** * INTERNAL: Translate argumentValues into a database row. */ public AbstractRecord rowFromArguments(List argumentValues, AbstractSession session) throws QueryException { List<DatabaseField> argumentFields = this.argumentFields; // PERF: argumentFields are set in prepare, but need to be built if // query is not prepared. if (!isPrepared() || (argumentFields == null)) { argumentFields = buildArgumentFields(); } if (argumentFields.size() != argumentValues.size()) { throw QueryException.argumentSizeMismatchInQueryAndQueryDefinition(this); } int argumentsSize = argumentFields.size(); AbstractRecord row = new DatabaseRecord(argumentsSize); for (int index = 0; index < argumentsSize; index++) { row.put(argumentFields.get(index), argumentValues.get(index)); } return row; }
/** * INTERNAL: Translate argumentValues into a database row. */ public AbstractRecord rowFromArguments(List argumentValues, AbstractSession session) throws QueryException { List<DatabaseField> argumentFields = this.argumentFields; // PERF: argumentFields are set in prepare, but need to be built if // query is not prepared. if (!isPrepared() || (argumentFields == null)) { argumentFields = buildArgumentFields(); } if (argumentFields.size() != argumentValues.size()) { throw QueryException.argumentSizeMismatchInQueryAndQueryDefinition(this); } int argumentsSize = argumentFields.size(); AbstractRecord row = new DatabaseRecord(argumentsSize); for (int index = 0; index < argumentsSize; index++) { row.put(argumentFields.get(index), argumentValues.get(index)); } return row; }
/** * INTERNAL: * Clone the query */ public Object clone() { try { DatabaseQuery cloneQuery = (DatabaseQuery)super.clone(); // Keep a reference back to the original source query. cloneQuery.sourceMapping = this.sourceMapping; // partial fix for 3054240 // need to pay attention to other components of the query, too MWN if (cloneQuery.properties != null) { if (cloneQuery.properties.isEmpty()) { cloneQuery.setProperties(null); } else { cloneQuery.setProperties(new HashMap(getProperties())); } } // bug 3524620: now that the query mechanism is lazy-init'd, // only clone the query mechanism if we have one. if (hasQueryMechanism()) { cloneQuery.setQueryMechanism(getQueryMechanism().clone(cloneQuery)); } cloneQuery.setIsPrepared(isPrepared());// Setting some things will trigger unprepare. return cloneQuery; } catch (CloneNotSupportedException e) { return null; } }
/** * Populate the query using the information retrieved from parsing the JPQL. */ public void populateQuery(String jpqlString, ObjectLevelReadQuery query, AbstractSession session) { // PERF: Check if the JPQL has already been parsed. // Only allow queries with default properties to be parse cached. boolean isCacheable = query.isDefaultPropertiesQuery(); DatabaseQuery cachedQuery = null; if (isCacheable) { cachedQuery = (DatabaseQuery)session.getProject().getJPQLParseCache().get(jpqlString); } if ((cachedQuery == null) || (!cachedQuery.isPrepared()) || (cachedQuery.getClass() != query.getClass())) { JPQLParser parser = parseEJBQLString(jpqlString); JPQLParseTree parseTree = parser.getParseTree(); parseTree.populateQuery(query, session); if (isCacheable) { session.getProject().getJPQLParseCache().put(jpqlString, query); } } else { query.prepareFromQuery(cachedQuery); query.setIsPrepared(true); } }
/** * Populate the query using the information retrieved from parsing the JPQL. */ public void populateQuery(String jpqlString, ObjectLevelReadQuery query, AbstractSession session) { // PERF: Check if the JPQL has already been parsed. // Only allow queries with default properties to be parse cached. boolean isCacheable = query.isDefaultPropertiesQuery(); DatabaseQuery cachedQuery = null; if (isCacheable) { cachedQuery = (DatabaseQuery)session.getProject().getJPQLParseCache().get(jpqlString); } if ((cachedQuery == null) || (!cachedQuery.isPrepared()) || (cachedQuery.getClass() != query.getClass())) { JPQLParser parser = parseEJBQLString(jpqlString); JPQLParseTree parseTree = parser.getParseTree(); parseTree.populateQuery(query, session); if (isCacheable) { session.getProject().getJPQLParseCache().put(jpqlString, query); } } else { query.prepareFromQuery(cachedQuery); query.setIsPrepared(true); } }
/** * Populate the query using the information retrieved from parsing the JPQL. */ public void populateQuery(String jpqlString, ObjectLevelReadQuery query, AbstractSession session) { // PERF: Check if the JPQL has already been parsed. // Only allow queries with default properties to be parse cached. boolean isCacheable = query.isDefaultPropertiesQuery(); DatabaseQuery cachedQuery = null; if (isCacheable) { cachedQuery = (DatabaseQuery)session.getProject().getJPQLParseCache().get(jpqlString); } if ((cachedQuery == null) || (!cachedQuery.isPrepared()) || (cachedQuery.getClass() != query.getClass())) { JPQLParser parser = parseEJBQLString(jpqlString); JPQLParseTree parseTree = parser.getParseTree(); parseTree.populateQuery(query, session); if (isCacheable) { session.getProject().getJPQLParseCache().put(jpqlString, query); } } else { query.prepareFromQuery(cachedQuery); query.setIsPrepared(true); } }
if (!this.databaseQuery.isPrepared()) {
/** * INTERNAL: * Check if the query is cached and prepare from it. * Return true if the query was cached. */ protected boolean prepareFromCachedQuery() { // PERF: Check if the equivalent expression query has already been prepared. // Only allow queries with default properties to be cached. boolean isCacheable = isExpressionQuery() && (!getQueryMechanism().isJPQLCallQueryMechanism()) && isDefaultPropertiesQuery() && (!getSession().isHistoricalSession()); DatabaseQuery cachedQuery = null; if (isCacheable) { cachedQuery = this.descriptor.getQueryManager().getCachedExpressionQuery(this); } else { return false; } if ((cachedQuery != null) && cachedQuery.isPrepared()) { prepareFromQuery(cachedQuery); setIsPrepared(true); return true; } this.descriptor.getQueryManager().putCachedExpressionQuery(this); this.isCachedExpressionQuery = true; this.isExecutionClone = false; return false; }
/** * INTERNAL: * Check if the query is cached and prepare from it. * Return true if the query was cached. */ protected boolean prepareFromCachedQuery() { // PERF: Check if the equivalent expression query has already been prepared. // Only allow queries with default properties to be cached. boolean isCacheable = isExpressionQuery() && (!getQueryMechanism().isJPQLCallQueryMechanism()) && isDefaultPropertiesQuery() && (!getSession().isHistoricalSession()); DatabaseQuery cachedQuery = null; if (isCacheable) { cachedQuery = this.descriptor.getQueryManager().getCachedExpressionQuery(this); } else { return false; } if ((cachedQuery != null) && cachedQuery.isPrepared()) { prepareFromQuery(cachedQuery); setIsPrepared(true); return true; } this.descriptor.getQueryManager().putCachedExpressionQuery(this); this.isExecutionClone = false; return false; }
/** * INTERNAL: * Check if the query is cached and prepare from it. * Return true if the query was cached. */ protected boolean prepareFromCachedQuery() { // PERF: Check if the equivalent expression query has already been prepared. // Only allow queries with default properties to be cached. boolean isCacheable = isExpressionQuery() && (!getQueryMechanism().isJPQLCallQueryMechanism()) && isDefaultPropertiesQuery() && (!getSession().isHistoricalSession()); DatabaseQuery cachedQuery = null; if (isCacheable) { cachedQuery = this.descriptor.getQueryManager().getCachedExpressionQuery(this); } else { return false; } if ((cachedQuery != null) && cachedQuery.isPrepared()) { prepareFromQuery(cachedQuery); setIsPrepared(true); return true; } // cuba begin if (org.eclipse.persistence.internal.helper.CubaUtil.isSoftDeletion()) { this.descriptor.getQueryManager().putCachedExpressionQuery(this); this.isCachedExpressionQuery = true; this.isExecutionClone = false; } // cuba end return false; }
databaseQuery = (DatabaseQuery) session.getProject().getJPQLParseCache().get(jpqlQuery); if ((databaseQuery == null) || (!databaseQuery.isPrepared())) { JPAQueryBuilder queryBuilder = session.getQueryBuilder(); databaseQuery = queryBuilder.buildQuery(jpqlQuery, session);
if (!isPrepared() && shouldPrepare()) {
if (!isPrepared() && shouldPrepare()) {
if (!isPrepared() && shouldPrepare()) {