@Override
public int updateAll(Query<? extends Entity> query, Update update) throws UnifyException {
try {
SqlEntityInfo sqlEntityInfo = sqlDataSourceDialect.getSqlEntityInfo(query.getEntityClass());
if (sqlDataSourceDialect.isQueryOffsetOrLimit(query)
|| (sqlEntityInfo.testTrueFieldNamesOnly(query.getFields()))) {
return getSqlStatementExecutor().executeUpdate(connection,
sqlDataSourceDialect.prepareUpdateStatement(query, update));
}
SqlFieldInfo idFieldInfo = sqlEntityInfo.getIdFieldInfo();
List<?> idList = valueList(idFieldInfo.getFieldType(), idFieldInfo.getName(), query);
if (!idList.isEmpty()) {
Query<? extends Entity> updateQuery = query.copyNoAll();
updateQuery.add(new Amongst(idFieldInfo.getName(), idList));
return getSqlStatementExecutor().executeUpdate(connection,
sqlDataSourceDialect.prepareUpdateStatement(updateQuery, update));
}
} catch (UnifyException e) {
throw e;
} catch (Exception e) {
throw new UnifyException(e, UnifyCoreErrorConstants.COMPONENT_OPERATION_ERROR, getClass().getSimpleName());
}
return 0;
}