protected void initializeDeleteQuery(AbstractSession session) { if (!getDeleteQuery().hasSessionName()) { getDeleteQuery().setSessionName(session.getName()); } if (hasCustomDeleteQuery()) { return; } SQLDeleteStatement statement = new SQLDeleteStatement(); ExpressionBuilder builder = new ExpressionBuilder(); Expression expression = createWhereClauseForDeleteQuery(builder); statement.setWhereClause(expression); statement.setTable(getReferenceTable()); getDeleteQuery().setSQLStatement(statement); }
writer.write("DELETE "); if (getHintString() != null) { writer.write(getHintString()); writer.write(" "); writer.write(getTable().getQualifiedNameDelimited(session.getPlatform())); if (getWhereClause() != null) { writer.write(" WHERE "); ExpressionSQLPrinter printer = new ExpressionSQLPrinter(session, getTranslationRow(), call, false, getBuilder()); printer.setWriter(writer); printer.printExpression(getWhereClause());
/** * Used by DeleteAllQuery to create DeleteStatement in a simple case * when selectionCriteria==null. */ protected SQLDeleteStatement buildDeleteStatementForDeleteAllQuery(DatabaseTable table, Expression inheritanceExpression) { SQLDeleteStatement deleteStatement = new SQLDeleteStatement(); if(inheritanceExpression != null) { deleteStatement.setWhereClause((Expression)inheritanceExpression.clone()); } deleteStatement.setTable(table); deleteStatement.setTranslationRow(getTranslationRow()); deleteStatement.setHintString(getQuery().getHintString()); return deleteStatement; }
/** * INTERNAL: * Performs a logical delete (update) on the historical schema. Direct * collections and many to many mappings are maintained through the session * events. */ public void mappingLogicalDelete(ModifyQuery originalQuery, AbstractRecord arguments, AbstractSession session) { SQLDeleteStatement originalStatement = (SQLDeleteStatement)originalQuery.getSQLStatement(); DataModifyQuery historyQuery = new DataModifyQuery(); SQLUpdateStatement historyStatement = new SQLUpdateStatement(); DatabaseTable histTable = getHistoricalTables().get(0); historyStatement.setTable(histTable); Expression whereClause = (Expression)originalStatement.getWhereClause().clone(); DatabaseField endField = getEnd(); whereClause = whereClause.getBuilder().getField(endField).isNull().and(whereClause); historyStatement.setWhereClause(whereClause); AbstractRecord modifyRow = new DatabaseRecord(); AbstractRecord translationRow = arguments.clone(); Object time = getCurrentTime(session); modifyRow.add(getEnd(), time); translationRow.add(getEnd(), time); historyStatement.setModifyRow(modifyRow); historyQuery.setSQLStatement(historyStatement); historyQuery.setModifyRow(modifyRow); session.executeQuery(historyQuery, translationRow); } }
SQLCall call = (SQLCall)super.buildCall(session);
/** * INTERNAL: * Performs a logical delete (update) on the historical schema. Direct * collections and many to many mappings are maintained through the session * events. */ public void mappingLogicalDelete(ModifyQuery originalQuery, AbstractRecord arguments, AbstractSession session) { SQLDeleteStatement originalStatement = (SQLDeleteStatement)originalQuery.getSQLStatement(); DataModifyQuery historyQuery = new DataModifyQuery(); SQLUpdateStatement historyStatement = new SQLUpdateStatement(); DatabaseTable histTable = (DatabaseTable)getHistoricalTables().elementAt(0); historyStatement.setTable(histTable); Expression whereClause = (Expression)originalStatement.getWhereClause().clone(); DatabaseField endField = getEnd(); whereClause = whereClause.getBuilder().getField(endField).isNull().and(whereClause); historyStatement.setWhereClause(whereClause); AbstractRecord modifyRow = new DatabaseRecord(); AbstractRecord translationRow = (AbstractRecord)arguments.clone(); Object time = getCurrentTime(session); modifyRow.add(getEnd(), time); translationRow.add(getEnd(), time); historyStatement.setModifyRow(modifyRow); historyQuery.setSQLStatement(historyStatement); historyQuery.setModifyRow(modifyRow); session.executeQuery(historyQuery, translationRow); } }
SQLCall call = (SQLCall)super.buildCall(session);
protected void initializeDeleteNullQuery(AbstractSession session) { if (!getDeleteNullQuery().hasSessionName()) { getDeleteNullQuery().setSessionName(session.getName()); } if (getDeleteNullQuery().getPartitioningPolicy() == null) { getDeleteNullQuery().setPartitioningPolicy(getPartitioningPolicy()); } SQLDeleteStatement statement = new SQLDeleteStatement(); ExpressionBuilder builder = new ExpressionBuilder(); Expression expression = createWhereClauseForDeleteNullQuery(builder); statement.setWhereClause(expression); statement.setTable(getReferenceTable()); getDeleteNullQuery().setSQLStatement(statement); }
/** * Used by DeleteAllQuery to create DeleteStatement in a simple case * when selectionCriteria==null. */ protected SQLDeleteStatement buildDeleteStatementForDeleteAllQuery(DatabaseTable table, Expression inheritanceExpression) { SQLDeleteStatement deleteStatement = new SQLDeleteStatement(); if(inheritanceExpression != null) { deleteStatement.setWhereClause((Expression)inheritanceExpression.clone()); } deleteStatement.setTable(table); deleteStatement.setTranslationRow(getTranslationRow()); deleteStatement.setHintString(getQuery().getHintString()); return deleteStatement; }
writer.write("DELETE "); if (getHintString() != null) { writer.write(getHintString()); writer.write(" "); writer.write(getTable().getQualifiedNameDelimited(session.getPlatform())); if (getWhereClause() != null) { writer.write(" WHERE "); ExpressionSQLPrinter printer = new ExpressionSQLPrinter(session, getTranslationRow(), call, false, getBuilder()); printer.setWriter(writer); printer.printExpression(getWhereClause());
/** * INTERNAL: * Performs a logical delete (update) on the historical schema. Direct * collections and many to many mappings are maintained through the session * events. */ public void mappingLogicalDelete(ModifyQuery originalQuery, AbstractRecord arguments, AbstractSession session) { SQLDeleteStatement originalStatement = (SQLDeleteStatement)originalQuery.getSQLStatement(); DataModifyQuery historyQuery = new DataModifyQuery(); SQLUpdateStatement historyStatement = new SQLUpdateStatement(); DatabaseTable histTable = getHistoricalTables().get(0); historyStatement.setTable(histTable); Expression whereClause = (Expression)originalStatement.getWhereClause().clone(); DatabaseField endField = getEnd(); whereClause = whereClause.getBuilder().getField(endField).isNull().and(whereClause); historyStatement.setWhereClause(whereClause); AbstractRecord modifyRow = new DatabaseRecord(); AbstractRecord translationRow = arguments.clone(); Object time = getCurrentTime(session); modifyRow.add(getEnd(), time); translationRow.add(getEnd(), time); historyStatement.setModifyRow(modifyRow); historyQuery.setSQLStatement(historyStatement); historyQuery.setModifyRow(modifyRow); session.executeQuery(historyQuery, translationRow); } }
SQLCall call = (SQLCall)super.buildCall(session);
protected void initializeDeleteNullQuery(AbstractSession session) { if (!getDeleteNullQuery().hasSessionName()) { getDeleteNullQuery().setSessionName(session.getName()); } if (getDeleteNullQuery().getPartitioningPolicy() == null) { getDeleteNullQuery().setPartitioningPolicy(getPartitioningPolicy()); } SQLDeleteStatement statement = new SQLDeleteStatement(); ExpressionBuilder builder = new ExpressionBuilder(); Expression expression = createWhereClauseForDeleteNullQuery(builder); statement.setWhereClause(expression); statement.setTable(getReferenceTable()); getDeleteNullQuery().setSQLStatement(statement); }
/** * Used by DeleteAllQuery to create DeleteStatement in a simple case * when selectionCriteria==null. */ protected SQLDeleteStatement buildDeleteStatementForDeleteAllQuery(DatabaseTable table, Expression inheritanceExpression) { SQLDeleteStatement deleteStatement = new SQLDeleteStatement(); if(inheritanceExpression != null) { deleteStatement.setWhereClause((Expression)inheritanceExpression.clone()); } deleteStatement.setTable(table); deleteStatement.setTranslationRow(getTranslationRow()); deleteStatement.setHintString(getQuery().getHintString()); return deleteStatement; }
writer.write("DELETE "); if (getHintString() != null) { writer.write(getHintString()); writer.write(" "); writer.write(getTable().getQualifiedNameDelimited(session.getPlatform())); if (getWhereClause() != null) { writer.write(" WHERE "); ExpressionSQLPrinter printer = new ExpressionSQLPrinter(session, getTranslationRow(), call, false, getBuilder()); printer.setWriter(writer); printer.printExpression(getWhereClause());
protected void initializeDeleteAtIndexQuery(AbstractSession session) { if (!getDeleteAtIndexQuery().hasSessionName()) { getDeleteAtIndexQuery().setSessionName(session.getName()); } if (hasCustomDeleteAtIndexQuery()) { return; } SQLDeleteStatement statement = new SQLDeleteStatement(); ExpressionBuilder builder = new ExpressionBuilder(); Expression expression = createWhereClauseForDeleteQuery(builder); expression = expression.and(builder.getField(this.listOrderField).equal(builder.getParameter(this.listOrderField))); statement.setWhereClause(expression); statement.setTable(getReferenceTable()); getDeleteAtIndexQuery().setSQLStatement(statement); }
/** * Return the appropriate delete statement */ protected SQLDeleteStatement buildDeleteStatement(DatabaseTable table) { SQLDeleteStatement deleteStatement = new SQLDeleteStatement(); Expression whereClause; whereClause = getDescriptor().getObjectBuilder().buildDeleteExpression(table, getTranslationRow()); deleteStatement.setWhereClause(whereClause); deleteStatement.setTable(table); deleteStatement.setTranslationRow(getTranslationRow()); deleteStatement.setHintString(getQuery().getHintString()); return deleteStatement; }
SQLDeleteStatement statement = new SQLDeleteStatement(); statement.setTable(getRelationTable()); statement.setWhereClause(whereClause); getDeleteQuery().setSQLStatement(statement);
/** * Return the appropriate delete statement */ protected SQLDeleteStatement buildDeleteStatement(DatabaseTable table) { SQLDeleteStatement deleteStatement = new SQLDeleteStatement(); Expression whereClause; whereClause = getDescriptor().getObjectBuilder().buildDeleteExpression(table, getTranslationRow(), ((DeleteObjectQuery)getQuery()).usesOptimisticLocking()); deleteStatement.setWhereClause(whereClause); deleteStatement.setTable(table); deleteStatement.setTranslationRow(getTranslationRow()); deleteStatement.setHintString(getQuery().getHintString()); return deleteStatement; }
/** * Initialize delete all query. This query is used to all relevant rows from the * relation table. */ protected void initializeDeleteAllQuery(AbstractSession session) { if (!getDeleteAllQuery().hasSessionName()) { getDeleteAllQuery().setSessionName(session.getName()); } if (hasCustomDeleteAllQuery()) { return; } Expression expression = null; Expression subExpression; Expression builder = new ExpressionBuilder(); SQLDeleteStatement statement = new SQLDeleteStatement(); // Construct an expression to delete from the relation table. for (int index = 0; index < getSourceRelationKeyFields().size(); index++) { DatabaseField sourceRelationKey = getSourceRelationKeyFields().elementAt(index); DatabaseField sourceKey = getSourceKeyFields().elementAt(index); subExpression = builder.getField(sourceRelationKey).equal(builder.getParameter(sourceKey)); expression = subExpression.and(expression); } // All the entries are deleted in one shot. statement.setWhereClause(expression); statement.setTable(getRelationTable()); getDeleteAllQuery().setSQLStatement(statement); }