/** * PUBLIC: * Set the receiver's delete Call. This allows the user to override the SQL * generated by TOPLink, with there own SQL or procedure call. The arguments are * translated from the fields of the source row. * This is used to delete a single entry from the M-M join table. * Example, 'new SQLCall("delete from PROJ_EMP where PROJ_ID = #PROJ_ID AND EMP_ID = #EMP_ID")'. */ public void setDeleteCall(Call call) { DataModifyQuery query = new DataModifyQuery(); query.setCall(call); setCustomDeleteQuery(query); }
/** * INTERNAL: * Clone the appropriate attributes. */ public Object clone() { OneToManyMapping clone = (OneToManyMapping)super.clone(); clone.setTargetForeignKeysToSourceKeys(new HashMap(getTargetForeignKeysToSourceKeys())); clone.addTargetQuery = (DataModifyQuery) this.addTargetQuery.clone(); clone.removeTargetQuery = (DataModifyQuery) this.removeTargetQuery.clone(); clone.removeAllTargetsQuery = (DataModifyQuery) this.removeAllTargetsQuery.clone(); return clone; }
protected DataModifyQuery buildUpdateQuery(String seqName, Number size) { DataModifyQuery updateQuery = new DataModifyQuery(); updateQuery.dontBindAllParameters(); String sizeString = size.toString(); StringWriter writer = new StringWriter(updateStringBufferSize + seqName.length() + sizeString.length()); writer.write(updateString1); writer.write(seqName); writer.write(updateString2); writer.write(sizeString); updateQuery.setSQLString(writer.toString()); return updateQuery; }
/** * PUBLIC: */ public void setAddTargetSQLString(String sqlString) { DataModifyQuery query = new DataModifyQuery(); query.setSQLString(sqlString); setCustomAddTargetQuery(query); }
/** * Initialize insert query. This query is used to insert the collection of objects into the * reference table. */ protected void initializeInsertQuery(AbstractSession session) { if (!getInsertQuery().hasSessionName()) { getInsertQuery().setSessionName(session.getName()); } if (getInsertQuery().getPartitioningPolicy() == null) { getInsertQuery().setPartitioningPolicy(getPartitioningPolicy()); } if (hasCustomInsertQuery()) { return; } SQLInsertStatement statement = new SQLInsertStatement(); statement.setTable(getReferenceTable()); AbstractRecord directRow = new DatabaseRecord(); for (Enumeration referenceEnum = getReferenceKeyFields().elements(); referenceEnum.hasMoreElements();) { directRow.put((DatabaseField)referenceEnum.nextElement(), null); } directRow.put(getDirectField(), null); if(listOrderField != null) { directRow.put(listOrderField, null); } statement.setModifyRow(directRow); getInsertQuery().setSQLStatement(statement); getInsertQuery().setModifyRow(directRow); }
boolean hasChangeOrderTargetQuery = changeOrderTargetQuery != null; if(!hasChangeOrderTargetQuery) { changeOrderTargetQuery = new DataModifyQuery(); changeOrderTargetQuery = new DataModifyQuery(); if (!changeOrderTargetQuery.hasSessionName()) { changeOrderTargetQuery.setSessionName(session.getName()); statement.setWhereClause(whereClause); statement.setModifyRow(modifyRow); changeOrderTargetQuery.setSQLStatement(statement);
DataModifyQuery removeQuery = (DataModifyQuery)this.removeAllTargetsQuery.clone(); removeQuery.setModifyRow(modifyRow); removeQuery.setHasModifyRow(true); removeQuery.setIsExecutionClone(true); query.getSession().executeQuery(removeQuery, translationRow);
/** * INTERNAL: * Performs a logical insert into the historical schema. Direct * collections and many to many mappings are maintained through the session * events. */ public void mappingLogicalInsert(DataModifyQuery originalQuery, AbstractRecord arguments, AbstractSession session) { DataModifyQuery historyQuery = new DataModifyQuery(); SQLInsertStatement historyStatement = new SQLInsertStatement(); DatabaseTable histTable = getHistoricalTables().get(0); historyStatement.setTable(histTable); AbstractRecord modifyRow = originalQuery.getModifyRow().clone(); AbstractRecord translationRow = arguments.clone(); // Start could be the version field in timestamp locking. if (!modifyRow.containsKey(getStart())) { Object time = getCurrentTime(session); modifyRow.add(getStart(), time); translationRow.add(getStart(), time); } historyQuery.setSQLStatement(historyStatement); historyQuery.setModifyRow(modifyRow); historyStatement.setModifyRow(modifyRow); session.executeQuery(historyQuery, translationRow); }
query.setIsUserDefined(true); query.checkPrepare(writeSession, null); query = (DataModifyQuery)query.clone(); query.setAccessor(accessor); query.setAccessor(accessor); query.setIsUserDefinedSQLCall(false); if (args != null) { writeSession.executeQuery(query, args);
if (!addTargetQuery.hasSessionName()) { addTargetQuery.setSessionName(session.getName()); statement.setWhereClause(whereClause); statement.setModifyRow(modifyRow); addTargetQuery.setSQLStatement(statement);
/** * INTERNAL: * Return an Oracle defined VPD set identifier query. */ @Override public DatabaseQuery getVPDSetIdentifierQuery(String vpdIdentifier) { if (vpdSetIdentifierQuery == null) { vpdSetIdentifierQuery = new DataModifyQuery("CALL DBMS_SESSION.SET_IDENTIFIER(#" + vpdIdentifier + ")"); } return vpdSetIdentifierQuery; }
protected DataModifyQuery buildUpdateQuery() { DataModifyQuery query = new DataModifyQuery(); query.addArgument(getNameFieldName()); query.addArgument("PREALLOC_SIZE"); StringWriter writer = new StringWriter(); writer.write("UPDATE " + getQualifiedTableName()); writer.write(" SET " + getCounterFieldName()); writer.write(" = " + getCounterFieldName()); writer.write(" + #PREALLOC_SIZE"); writer.write(" WHERE " + getNameFieldName() + " = #" + getNameFieldName()); query.setSQLString(writer.toString()); return query; } }
/** * PUBLIC: * Execute the call on the database. * The row count is returned. * The call can be a stored procedure call, SQL call or other type of call. * <p>Example: * <p>session.executeNonSelectingCall(new SQLCall("Delete from Employee"); * * @see #executeSelectingCall(Call) */ public int executeNonSelectingCall(Call call) throws DatabaseException { DataModifyQuery query = new DataModifyQuery(); query.setIsExecutionClone(true); query.setCall(call); Integer value = (Integer)executeQuery(query); if (value == null) { return 0; } else { return value.intValue(); } }
/** * INTERNAL: * Execute the call on the database. Calling this method will bypass a * global setting to disallow native SQL queries. (set by default when * one Entity is marked as multitenant) * * The row count is returned. * * The call can be a stored procedure call, SQL call or other type of call. * * <p>Example: * <p>session.executeNonSelectingCall(new SQLCall("Delete from Employee"), true); * * @see #priviledgedExecuteSelectingCall(Call) */ public int priviledgedExecuteNonSelectingCall(Call call) throws DatabaseException { DataModifyQuery query = new DataModifyQuery(); query.setAllowNativeSQLQuery(true); query.setIsExecutionClone(true); query.setCall(call); Integer value = (Integer)executeQuery(query); if (value == null) { return 0; } else { return value.intValue(); } }
/** * Support sequencing through sequence file. */ @Override protected DataModifyQuery buildUpdateQuery() { DataModifyQuery query = new DataModifyQuery(); query.addArgument("sequence-name"); query.addArgument("sequence-count"); XQueryInteraction interaction = new XQueryInteraction(); interaction.setFunctionName("update-sequence"); interaction.setProperty("fileName", "sequence.xml"); interaction.setXQueryString("sequence[sequence-name='#sequence-name']"); interaction.setInputRootElementName("sequence"); interaction.addArgument("sequence-name"); interaction.addArgument("sequence-count"); interaction.setOutputResultPath("result"); query.setCall(interaction); return query; } }
/** * Initialize insert query. This query is used to insert the collection of objects into the * reference table. */ protected void initializeInsertQuery(AbstractSession session) { if (!getInsertQuery().hasSessionName()) { getInsertQuery().setSessionName(session.getName()); } if (hasCustomInsertQuery()) { return; } SQLInsertStatement statement = new SQLInsertStatement(); statement.setTable(getReferenceTable()); AbstractRecord directRow = new DatabaseRecord(); for (Enumeration referenceEnum = getReferenceKeyFields().elements(); referenceEnum.hasMoreElements();) { directRow.put((DatabaseField)referenceEnum.nextElement(), null); } directRow.put(getDirectField(), null); if(listOrderField != null) { directRow.put(listOrderField, null); } statement.setModifyRow(directRow); getInsertQuery().setSQLStatement(statement); getInsertQuery().setModifyRow(directRow); }
/** * INTERNAL: * Prepare the receiver for execution in a session. */ protected void prepare() { super.prepare(); getQueryMechanism().prepareExecuteNoSelect(); }
public DataModifyQuery(Call call) { this(); setCall(call); }
/** * Initialize insert query. This query is used to insert the collection of objects into the * reference table. */ @Override protected void initializeInsertQuery(AbstractSession session) { super.initializeInsertQuery(session); getContainerPolicy().addFieldsForMapKey(getInsertQuery().getModifyRow()); }
/** * Initialize insert query. This query is used to insert the collection of objects into the * reference table. */ protected void initializeInsertQuery(AbstractSession session) { if (!getInsertQuery().hasSessionName()) { getInsertQuery().setSessionName(session.getName()); } if (getInsertQuery().getPartitioningPolicy() == null) { getInsertQuery().setPartitioningPolicy(getPartitioningPolicy()); } if (hasCustomInsertQuery()) { return; } SQLInsertStatement statement = new SQLInsertStatement(); statement.setTable(getReferenceTable()); AbstractRecord directRow = new DatabaseRecord(); for (Enumeration referenceEnum = getReferenceKeyFields().elements(); referenceEnum.hasMoreElements();) { directRow.put((DatabaseField)referenceEnum.nextElement(), null); } directRow.put(getDirectField(), null); if(listOrderField != null) { directRow.put(listOrderField, null); } statement.setModifyRow(directRow); getInsertQuery().setSQLStatement(statement); getInsertQuery().setModifyRow(directRow); }