Browse Source

Polishing.

Extract method in order to make the code more readable.

Switch to #xxx syntax for issue numbers instead of gh-xxx.

Original pull request #939
pull/949/head
Jens Schauder 5 years ago
parent
commit
53bed2613b
No known key found for this signature in database
GPG Key ID: 45CC872F17423DBF
  1. 40
      spring-data-jdbc/src/main/java/org/springframework/data/jdbc/core/convert/DefaultDataAccessStrategy.java
  2. 4
      spring-data-jdbc/src/test/java/org/springframework/data/jdbc/core/convert/DefaultDataAccessStrategyUnitTests.java
  3. 2
      spring-data-relational/src/test/java/org/springframework/data/relational/core/sql/ConditionsUnitTests.java

40
spring-data-jdbc/src/main/java/org/springframework/data/jdbc/core/convert/DefaultDataAccessStrategy.java

@ -124,30 +124,34 @@ public class DefaultDataAccessStrategy implements DataAccessStrategy { @@ -124,30 +124,34 @@ public class DefaultDataAccessStrategy implements DataAccessStrategy {
String insertSql = sqlGenerator.getInsert(new HashSet<>(parameterSource.getIdentifiers()));
if (idValue == null) {
return executeInsertAndReturnGeneratedId(domainType, persistentEntity, parameterSource, insertSql);
} else {
KeyHolder holder = new GeneratedKeyHolder();
operations.update(insertSql, parameterSource);
return null;
}
}
IdGeneration idGeneration = sqlGeneratorSource.getDialect().getIdGeneration();
@Nullable
private <T> Object executeInsertAndReturnGeneratedId(Class<T> domainType, RelationalPersistentEntity<T> persistentEntity, SqlIdentifierParameterSource parameterSource, String insertSql) {
if (idGeneration.driverRequiresKeyColumnNames()) {
KeyHolder holder = new GeneratedKeyHolder();
String[] keyColumnNames = getKeyColumnNames(domainType);
if (keyColumnNames.length == 0) {
operations.update(insertSql, parameterSource, holder);
} else {
operations.update(insertSql, parameterSource, holder, keyColumnNames);
}
} else {
IdGeneration idGeneration = sqlGeneratorSource.getDialect().getIdGeneration();
if (idGeneration.driverRequiresKeyColumnNames()) {
String[] keyColumnNames = getKeyColumnNames(domainType);
if (keyColumnNames.length == 0) {
operations.update(insertSql, parameterSource, holder);
} else {
operations.update(insertSql, parameterSource, holder, keyColumnNames);
}
return getIdFromHolder(holder, persistentEntity);
} else {
operations.update(insertSql, parameterSource, holder);
}
else {
operations.update(insertSql, parameterSource);
return null;
}
return getIdFromHolder(holder, persistentEntity);
}
/*
@ -462,6 +466,10 @@ public class DefaultDataAccessStrategy implements DataAccessStrategy { @@ -462,6 +466,10 @@ public class DefaultDataAccessStrategy implements DataAccessStrategy {
return parameters;
}
/**
* Returns the id value if its not a primitive zero. Returns {@literal null} if the id value is null or a primitive
* zero.
*/
@Nullable
@SuppressWarnings("unchecked")
private <S, ID> ID getIdValueOrNull(S instance, RelationalPersistentEntity<S> persistentEntity) {

4
spring-data-jdbc/src/test/java/org/springframework/data/jdbc/core/convert/DefaultDataAccessStrategyUnitTests.java

@ -193,7 +193,7 @@ public class DefaultDataAccessStrategyUnitTests { @@ -193,7 +193,7 @@ public class DefaultDataAccessStrategyUnitTests {
assertThat(paramSourceCaptor.getValue().getValue("DUMMYENTITYROOT")).isEqualTo(rawId);
}
@Test // gh-933
@Test // #933
public void insertWithDefinedIdDoesNotRetrieveGeneratedKeys() {
Object generatedId = accessStrategy.insert(new DummyEntity(ORIGINAL_ID), DummyEntity.class, Identifier.from(additionalParameters));
@ -204,7 +204,7 @@ public class DefaultDataAccessStrategyUnitTests { @@ -204,7 +204,7 @@ public class DefaultDataAccessStrategyUnitTests {
paramSourceCaptor.capture());
}
@Test // gh-933
@Test // #933
public void insertWithUndefinedIdRetrievesGeneratedKeys() {
when(namedJdbcOperations.update(any(), any(), any()))

2
spring-data-relational/src/test/java/org/springframework/data/relational/core/sql/ConditionsUnitTests.java

@ -24,7 +24,7 @@ import org.junit.jupiter.api.Test; @@ -24,7 +24,7 @@ import org.junit.jupiter.api.Test;
*/
class ConditionsUnitTests {
@Test // gh-916
@Test // #916
void notInOfColumnAndExpression() {
Table table = Table.create("t");

Loading…
Cancel
Save