diff --git a/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/core/convert/SqlGenerator.java b/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/core/convert/SqlGenerator.java index b299df458..84a528057 100644 --- a/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/core/convert/SqlGenerator.java +++ b/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/core/convert/SqlGenerator.java @@ -260,7 +260,10 @@ class SqlGenerator { Condition condition = null; for (SqlIdentifier backReferenceColumn : parentIdentifier.toMap().keySet()) { - + if (SqlIdentifier.EMPTY.equals(backReferenceColumn)){ + throw new UnsupportedOperationException( + "An empty SqlIdentifier can't be used in condition. Make sure that all composite primary keys are defined in the query."); + } Condition newCondition = table.column(backReferenceColumn).isEqualTo(getBindMarker(backReferenceColumn)); condition = condition == null ? newCondition : condition.and(newCondition); } diff --git a/spring-data-jdbc/src/test/java/org/springframework/data/jdbc/core/convert/SqlGeneratorUnitTests.java b/spring-data-jdbc/src/test/java/org/springframework/data/jdbc/core/convert/SqlGeneratorUnitTests.java index 9869c11a0..f9fff4add 100644 --- a/spring-data-jdbc/src/test/java/org/springframework/data/jdbc/core/convert/SqlGeneratorUnitTests.java +++ b/spring-data-jdbc/src/test/java/org/springframework/data/jdbc/core/convert/SqlGeneratorUnitTests.java @@ -443,6 +443,17 @@ class SqlGeneratorUnitTests { } + @Test // DATAJDBC-613 + void findAllByPropertyWithEmptyBackrefColumn() { + + assertThatThrownBy(() -> { + sqlGenerator.getFindAllByProperty(Identifier.of(EMPTY, 0, Object.class), + unquoted("key-column"), + false); + }).isInstanceOf(UnsupportedOperationException.class) + .hasMessageContaining("An empty SqlIdentifier can't be used in condition. Make sure that all composite primary keys are defined in the query."); + } + @Test // DATAJDBC-219 void updateWithVersion() {