public PreparedStatement prepareUpdateFields(Session session, EntityMeta entityMeta, List<PropertyMeta> pms, Options options) {
log.trace("Generate prepared statement for UPDATE properties {}", pms);
PropertyMeta idMeta = entityMeta.getIdMeta();
final EntityMetaConfig metaConfig = entityMeta.config();
Update update = update(metaConfig.getKeyspaceName(), metaConfig.getTableName());
final Update.Conditions updateConditions = update.onlyIf();
if (options.hasCASConditions()) {
for (CASCondition CASCondition : options.getCASConditions()) {
updateConditions.and(CASCondition.toClauseForPreparedStatement());
}
}
Assignments assignments = null;
boolean onlyStaticColumns = true;
for (int i = 0; i < pms.size(); i++) {
PropertyMeta pm = pms.get(i);
if (!pm.structure().isStaticColumn()) {
onlyStaticColumns = false;
}
if (i == 0) {
assignments = pm.forStatementGeneration().prepareUpdateField(updateConditions);
} else {
assignments = pm.forStatementGeneration().prepareUpdateField(assignments);
}
}
RegularStatement statement = prepareWhereClauseWithTTLForUpdate(idMeta, assignments, onlyStaticColumns, options);
return session.prepare(statement.getQueryString());
}