diff --git a/src/main/java/org/springframework/data/jdbc/core/SqlGenerator.java b/src/main/java/org/springframework/data/jdbc/core/SqlGenerator.java index a92d3f1ec..5a00b8da5 100644 --- a/src/main/java/org/springframework/data/jdbc/core/SqlGenerator.java +++ b/src/main/java/org/springframework/data/jdbc/core/SqlGenerator.java @@ -284,8 +284,9 @@ class SqlGenerator { String updateTemplate = "UPDATE %s SET %s WHERE %s = :%s"; - String setClause = columnNames.stream()// - .map(n -> String.format("%s = :%s", n, n))// + String setClause = columnNames.stream() // + .filter(s -> !s.equals(entity.getIdColumn())) // + .map(n -> String.format("%s = :%s", n, n)) // .collect(Collectors.joining(", ")); return String.format(updateTemplate, entity.getTableName(), setClause, entity.getIdColumn(), entity.getIdColumn()); diff --git a/src/test/java/org/springframework/data/jdbc/core/SqlGeneratorUnitTests.java b/src/test/java/org/springframework/data/jdbc/core/SqlGeneratorUnitTests.java index 6be1baa15..afe982fca 100644 --- a/src/test/java/org/springframework/data/jdbc/core/SqlGeneratorUnitTests.java +++ b/src/test/java/org/springframework/data/jdbc/core/SqlGeneratorUnitTests.java @@ -199,6 +199,17 @@ public class SqlGeneratorUnitTests { "FROM"); } + @Test // DATAJDBC-262 + public void update() { + + assertThat(sqlGenerator.getUpdate()).containsSequence( // + "UPDATE", // + "dummy_entity", // + "SET", // + "WHERE", // + "x_id = :x_id"); + } + private PersistentPropertyPath getPath(String path, Class base) { return PersistentPropertyPathTestUtils.getPath(context, path, base); }