public Update getUpdateByIdForKeys(String tableName, List<String> keys) { Table table = database.getTable(tableName); List<Column> columns = new LinkedList<>(); for (String key : keys) { columns.add(table.getColumn(key)); } Update update = new Update(table); update.setUpdatedColumns(columns); update.setWhere(getIdEqualsClause(tableName)); return update; }
Update update = new Update(table); update.setUpdatedColumns(whatColumns, deltas); update.setWhere(where); return new SQLInfoSelect(update.getStatement(), whatColumns, whereColumns, null);
/** * Updates a row in the database with given explicit values. */ protected void updateSimpleRowWithValues(String tableName, Row row) { Update update = sqlInfo.getUpdateByIdForKeys(tableName, row.getKeys()); Table table = update.getTable(); String sql = update.getStatement(); try (PreparedStatement ps = connection.prepareStatement(sql)) { if (logger.isLogEnabled()) { List<Serializable> values = new LinkedList<>(); values.addAll(row.getValues()); values.add(row.id); // id last in SQL logger.logSQL(sql, values); } int i = 1; List<String> keys = row.getKeys(); List<Serializable> values = row.getValues(); int size = keys.size(); for (int r = 0; r < size; r++) { String key = keys.get(r); Serializable value = values.get(r); table.getColumn(key).setToPreparedStatement(ps, i++, value); } dialect.setId(ps, i, row.id); // id last in SQL int count = ps.executeUpdate(); countExecute(); } catch (SQLException e) { throw new NuxeoException("Could not update: " + sql, e); } }
/** Alternative to {@link #setNewValues} */ public void setUpdatedColumns(List<Column> columns) { setUpdatedColumns(columns, Collections.emptySet()); }
Update update = new Update(table); update.setUpdatedColumns(storedColumnList); String whereString = table.getPrimaryColumn().getQuotedName() + " = ?"; update.setWhere(whereString); String sql = update.getStatement();