From dedaf3461433f633f55852e9956d4383a3f940ae Mon Sep 17 00:00:00 2001 From: Jens Schauder Date: Tue, 19 May 2020 14:45:57 +0200 Subject: [PATCH] DATAJDBC-545 - Fix support of setting properties via constructor. --- ...AggregateTemplateHsqlIntegrationTests.java | 22 +++++++++++++++++++ ...egateTemplateHsqlIntegrationTests-hsql.sql | 6 +++++ .../RelationalPersistentEntityImpl.java | 9 -------- 3 files changed, 28 insertions(+), 9 deletions(-) diff --git a/spring-data-jdbc/src/test/java/org/springframework/data/jdbc/core/ImmutableAggregateTemplateHsqlIntegrationTests.java b/spring-data-jdbc/src/test/java/org/springframework/data/jdbc/core/ImmutableAggregateTemplateHsqlIntegrationTests.java index a12b52b8..9e4b12d5 100644 --- a/spring-data-jdbc/src/test/java/org/springframework/data/jdbc/core/ImmutableAggregateTemplateHsqlIntegrationTests.java +++ b/spring-data-jdbc/src/test/java/org/springframework/data/jdbc/core/ImmutableAggregateTemplateHsqlIntegrationTests.java @@ -255,6 +255,17 @@ public class ImmutableAggregateTemplateHsqlIntegrationTests { assertThat(manual.content).isEqualTo("new content"); } + @Test // DATAJDBC-545 + public void setIdViaConstructor() { + + WithCopyConstructor entity = new WithCopyConstructor(null, "Alfred"); + + WithCopyConstructor saved = template.save(entity); + + assertThat(saved).isNotEqualTo(entity); + assertThat(saved.id).isNotNull(); + } + private static LegoSet createLegoSet(Manual manual) { return new LegoSet(null, "Star Destroyer", manual, null); @@ -296,6 +307,17 @@ public class ImmutableAggregateTemplateHsqlIntegrationTests { String name; } + static class WithCopyConstructor { + @Id + private final Long id; + private final String name; + + WithCopyConstructor(Long id, String name) { + this.id = id; + this.name = name; + } + } + @Configuration @Import(TestConfiguration.class) static class Config { diff --git a/spring-data-jdbc/src/test/resources/org.springframework.data.jdbc.core/ImmutableAggregateTemplateHsqlIntegrationTests-hsql.sql b/spring-data-jdbc/src/test/resources/org.springframework.data.jdbc.core/ImmutableAggregateTemplateHsqlIntegrationTests-hsql.sql index 3b2810e7..42059f76 100644 --- a/spring-data-jdbc/src/test/resources/org.springframework.data.jdbc.core/ImmutableAggregateTemplateHsqlIntegrationTests-hsql.sql +++ b/spring-data-jdbc/src/test/resources/org.springframework.data.jdbc.core/ImmutableAggregateTemplateHsqlIntegrationTests-hsql.sql @@ -23,3 +23,9 @@ CREATE TABLE AUTHOR ALTER TABLE AUTHOR ADD FOREIGN KEY (LEGO_SET) REFERENCES LEGO_SET (id); + +CREATE TABLE WITH_COPY_CONSTRUCTOR +( + ID BIGINT GENERATED BY DEFAULT AS IDENTITY (START WITH 1) PRIMARY KEY, + NAME VARCHAR(30) +); diff --git a/spring-data-relational/src/main/java/org/springframework/data/relational/core/mapping/RelationalPersistentEntityImpl.java b/spring-data-relational/src/main/java/org/springframework/data/relational/core/mapping/RelationalPersistentEntityImpl.java index 957ba483..cc02ad64 100644 --- a/spring-data-relational/src/main/java/org/springframework/data/relational/core/mapping/RelationalPersistentEntityImpl.java +++ b/spring-data-relational/src/main/java/org/springframework/data/relational/core/mapping/RelationalPersistentEntityImpl.java @@ -105,13 +105,4 @@ class RelationalPersistentEntityImpl extends BasicPersistentEntity", getType()); } - - /* - * (non-Javadoc) - * @see org.springframework.data.mapping.model.BasicPersistentEntity#setPersistentPropertyAccessorFactory(org.springframework.data.mapping.model.PersistentPropertyAccessorFactory) - */ - @Override - public void setPersistentPropertyAccessorFactory(PersistentPropertyAccessorFactory factory) { - - } }