@@ -127,7 +127,12 @@ public class DefaultDataAccessStrategy implements DataAccessStrategy {
|
||||
|
||||
@Override
|
||||
public <S> boolean update(S instance, Class<S> domainType) {
|
||||
return operations.update(sql(domainType).getUpdate(), sqlParametersFactory.forUpdate(instance, domainType)) != 0;
|
||||
|
||||
SqlIdentifierParameterSource parameterSource = sqlParametersFactory.forUpdate(instance, domainType);
|
||||
if (parameterSource.size() <= 1) {
|
||||
return true; // returning true, because conceptually the one row was correctly updated
|
||||
}
|
||||
return operations.update(sql(domainType).getUpdate(), parameterSource) != 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -81,4 +81,8 @@ class SqlIdentifierParameterSource extends AbstractSqlParameterSource {
|
||||
addValue(identifier, others.getValue(name), others.getSqlType(name));
|
||||
}
|
||||
}
|
||||
|
||||
int size() {
|
||||
return namesToValues.size();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1021,6 +1021,16 @@ class JdbcAggregateTemplateIntegrationTests {
|
||||
assertThat(template.save(entity).id).isNotNull();
|
||||
}
|
||||
|
||||
@Test // GH-1309
|
||||
void updateIdOnlyAggregate() {
|
||||
|
||||
WithIdOnly entity = new WithIdOnly();
|
||||
|
||||
assertThat(template.save(entity).id).isNotNull();
|
||||
|
||||
template.save(entity);
|
||||
}
|
||||
|
||||
private <T extends Number> void saveAndUpdateAggregateWithVersion(VersionedAggregate aggregate,
|
||||
Function<Number, T> toConcreteNumber) {
|
||||
saveAndUpdateAggregateWithVersion(aggregate, toConcreteNumber, 0);
|
||||
@@ -1456,6 +1466,7 @@ class JdbcAggregateTemplateIntegrationTests {
|
||||
@Id Long id;
|
||||
}
|
||||
|
||||
|
||||
@Configuration
|
||||
@Import(TestConfiguration.class)
|
||||
static class Config {
|
||||
|
||||
Reference in New Issue
Block a user