Skip to content

Commit 53bed26

Browse files
committed
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
1 parent 304345c commit 53bed26

File tree

3 files changed

+27
-19
lines changed

3 files changed

+27
-19
lines changed

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

Lines changed: 24 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -124,30 +124,34 @@ public <T> Object insert(T instance, Class<T> domainType, Identifier identifier)
124124
String insertSql = sqlGenerator.getInsert(new HashSet<>(parameterSource.getIdentifiers()));
125125

126126
if (idValue == null) {
127+
return executeInsertAndReturnGeneratedId(domainType, persistentEntity, parameterSource, insertSql);
128+
} else {
127129

128-
KeyHolder holder = new GeneratedKeyHolder();
130+
operations.update(insertSql, parameterSource);
131+
return null;
132+
}
133+
}
129134

130-
IdGeneration idGeneration = sqlGeneratorSource.getDialect().getIdGeneration();
135+
@Nullable
136+
private <T> Object executeInsertAndReturnGeneratedId(Class<T> domainType, RelationalPersistentEntity<T> persistentEntity, SqlIdentifierParameterSource parameterSource, String insertSql) {
131137

132-
if (idGeneration.driverRequiresKeyColumnNames()) {
138+
KeyHolder holder = new GeneratedKeyHolder();
133139

134-
String[] keyColumnNames = getKeyColumnNames(domainType);
135-
if (keyColumnNames.length == 0) {
136-
operations.update(insertSql, parameterSource, holder);
137-
} else {
138-
operations.update(insertSql, parameterSource, holder, keyColumnNames);
139-
}
140-
} else {
140+
IdGeneration idGeneration = sqlGeneratorSource.getDialect().getIdGeneration();
141+
142+
if (idGeneration.driverRequiresKeyColumnNames()) {
143+
144+
String[] keyColumnNames = getKeyColumnNames(domainType);
145+
if (keyColumnNames.length == 0) {
141146
operations.update(insertSql, parameterSource, holder);
147+
} else {
148+
operations.update(insertSql, parameterSource, holder, keyColumnNames);
142149
}
143-
144-
return getIdFromHolder(holder, persistentEntity);
150+
} else {
151+
operations.update(insertSql, parameterSource, holder);
145152
}
146-
else {
147153

148-
operations.update(insertSql, parameterSource);
149-
return null;
150-
}
154+
return getIdFromHolder(holder, persistentEntity);
151155
}
152156

153157
/*
@@ -462,6 +466,10 @@ private <S, T> SqlIdentifierParameterSource getParameterSource(@Nullable S insta
462466
return parameters;
463467
}
464468

469+
/**
470+
* Returns the id value if its not a primitive zero. Returns {@literal null} if the id value is null or a primitive
471+
* zero.
472+
*/
465473
@Nullable
466474
@SuppressWarnings("unchecked")
467475
private <S, ID> ID getIdValueOrNull(S instance, RelationalPersistentEntity<S> persistentEntity) {

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -193,7 +193,7 @@ public void considersConfiguredWriteConverterForIdValueObjectsWhichReferencedInO
193193
assertThat(paramSourceCaptor.getValue().getValue("DUMMYENTITYROOT")).isEqualTo(rawId);
194194
}
195195

196-
@Test // gh-933
196+
@Test // #933
197197
public void insertWithDefinedIdDoesNotRetrieveGeneratedKeys() {
198198

199199
Object generatedId = accessStrategy.insert(new DummyEntity(ORIGINAL_ID), DummyEntity.class, Identifier.from(additionalParameters));
@@ -204,7 +204,7 @@ public void insertWithDefinedIdDoesNotRetrieveGeneratedKeys() {
204204
paramSourceCaptor.capture());
205205
}
206206

207-
@Test // gh-933
207+
@Test // #933
208208
public void insertWithUndefinedIdRetrievesGeneratedKeys() {
209209

210210
when(namedJdbcOperations.update(any(), any(), any()))

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
*/
2525
class ConditionsUnitTests {
2626

27-
@Test // gh-916
27+
@Test // #916
2828
void notInOfColumnAndExpression() {
2929

3030
Table table = Table.create("t");

0 commit comments

Comments
 (0)