Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 09b15d9

Browse files
committed
Polishing.
Formatting. Added a test. Original pull request #2023 See #2008
1 parent 3b124ca commit 09b15d9

File tree

2 files changed

+27
-7
lines changed

2 files changed

+27
-7
lines changed

‎spring-data-jdbc/src/main/java/org/springframework/data/jdbc/repository/query/StringBasedJdbcQuery.java‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@
7373
public class StringBasedJdbcQuery extends AbstractJdbcQuery {
7474

7575
private static final String PARAMETER_NEEDS_TO_BE_NAMED = "For queries with named parameters you need to provide names for method parameters; Use @Param for query method parameters, or use the javac flag -parameters";
76-
private finalstatic String LOCKING_IS_NOT_SUPPORTED = "Currently, @Lock is supported only on derived queries. In other words, for queries created with @Query, the locking condition specified with @Lock does nothing. Offending method: ";
76+
private staticfinal String LOCKING_IS_NOT_SUPPORTED = "Currently, @Lock is supported only on derived queries. In other words, for queries created with @Query, the locking condition specified with @Lock does nothing. Offending method: ";
7777
private final JdbcConverter converter;
7878
private final RowMapperFactory rowMapperFactory;
7979
private final ValueExpressionQueryRewriter.ParsedQuery parsedQuery;
@@ -457,6 +457,7 @@ public boolean requiresRowMapper() {
457457

458458
@Nullable
459459
static <T> Constructor<T> findPrimaryConstructor(Class<T> clazz) {
460+
460461
try {
461462
return clazz.getDeclaredConstructor();
462463
} catch (NoSuchMethodException ex) {

‎spring-data-jdbc/src/test/java/org/springframework/data/jdbc/repository/query/StringBasedJdbcQueryUnitTests.java‎

Lines changed: 25 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,8 @@
5353
import org.springframework.data.jdbc.support.JdbcUtil;
5454
import org.springframework.data.projection.SpelAwareProxyProjectionFactory;
5555
import org.springframework.data.relational.core.mapping.RelationalMappingContext;
56+
import org.springframework.data.relational.core.sql.LockMode;
57+
import org.springframework.data.relational.repository.Lock;
5658
import org.springframework.data.repository.Repository;
5759
import org.springframework.data.repository.core.support.DefaultRepositoryMetadata;
5860
import org.springframework.data.repository.core.support.PropertiesBasedNamedQueries;
@@ -252,7 +254,7 @@ void sliceQueryNotSupported() {
252254
JdbcQueryMethod queryMethod = createMethod("sliceAll", Pageable.class);
253255

254256
assertThatThrownBy(
255-
() -> new StringBasedJdbcQuery(queryMethod, operations, result -> defaultRowMapper, converter, delegate))
257+
() -> new StringBasedJdbcQuery(queryMethod, operations, result -> defaultRowMapper, converter, delegate))
256258
.isInstanceOf(UnsupportedOperationException.class)
257259
.hasMessageContaining("Slice queries are not supported using string-based queries");
258260
}
@@ -278,6 +280,16 @@ void limitNotSupported() {
278280
.isInstanceOf(UnsupportedOperationException.class);
279281
}
280282

283+
@Test // GH-2023
284+
void lockNotSupported() {
285+
286+
JdbcQueryMethod queryMethod = createMethod("unsupportedWithLock", Long.class);
287+
288+
assertThatThrownBy(
289+
() -> new StringBasedJdbcQuery(queryMethod, operations, result -> defaultRowMapper, converter, delegate))
290+
.isInstanceOf(UnsupportedOperationException.class);
291+
}
292+
281293
@Test // GH-1212
282294
void convertsEnumCollectionParameterIntoStringCollectionParameter() {
283295

@@ -355,10 +367,12 @@ void spelCanBeUsedInsideQueries() {
355367
List<EvaluationContextExtension> list = new ArrayList<>();
356368
list.add(new MyEvaluationContextProvider());
357369

358-
QueryMethodValueEvaluationContextAccessor accessor = new QueryMethodValueEvaluationContextAccessor(new StandardEnvironment(), list);
370+
QueryMethodValueEvaluationContextAccessor accessor = new QueryMethodValueEvaluationContextAccessor(
371+
new StandardEnvironment(), list);
359372
this.delegate = new ValueExpressionDelegate(accessor, ValueExpressionParser.create());
360373

361-
StringBasedJdbcQuery sut = new StringBasedJdbcQuery(queryMethod, operations, result -> defaultRowMapper, converter, delegate);
374+
StringBasedJdbcQuery sut = new StringBasedJdbcQuery(queryMethod, operations, result -> defaultRowMapper, converter,
375+
delegate);
362376

363377
ArgumentCaptor<SqlParameterSource> paramSource = ArgumentCaptor.forClass(SqlParameterSource.class);
364378
ArgumentCaptor<String> query = ArgumentCaptor.forClass(String.class);
@@ -401,8 +415,8 @@ public SqlParameterSource extractParameterSource() {
401415
mock(RelationResolver.class))
402416
: this.converter;
403417

404-
StringBasedJdbcQuery query = new StringBasedJdbcQuery(method.getDeclaredQuery(), method, operations,result -> mock(RowMapper.class),
405-
converter, delegate);
418+
StringBasedJdbcQuery query = new StringBasedJdbcQuery(method.getDeclaredQuery(), method, operations,
419+
result -> mock(RowMapper.class), converter, delegate);
406420

407421
query.execute(arguments);
408422

@@ -438,7 +452,8 @@ private StringBasedJdbcQuery createQuery(JdbcQueryMethod queryMethod) {
438452
}
439453

440454
private StringBasedJdbcQuery createQuery(JdbcQueryMethod queryMethod, String preparedReference, Object value) {
441-
return new StringBasedJdbcQuery(queryMethod, operations, new StubRowMapperFactory(preparedReference, value), converter, delegate);
455+
return new StringBasedJdbcQuery(queryMethod, operations, new StubRowMapperFactory(preparedReference, value),
456+
converter, delegate);
442457
}
443458

444459
interface MyRepository extends Repository<Object, Long> {
@@ -505,6 +520,10 @@ interface MyRepository extends Repository<Object, Long> {
505520

506521
@Query("select count(1) from person where (firstname, lastname) in (:tuples)")
507522
Object findByListOfTuples(@Param("tuples") List<Object[]> tuples);
523+
524+
@Lock(value = LockMode.PESSIMISTIC_READ)
525+
@Query("SELECT * FROM person WHERE id = :id")
526+
DummyEntity unsupportedWithLock(Long id);
508527
}
509528

510529
private static class CustomRowMapper implements RowMapper<Object> {

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /