diff --git a/spring-data-jdbc/src/test/java/org/springframework/data/jdbc/core/PersistentPropertyPathExtensionUnitTests.java b/spring-data-jdbc/src/test/java/org/springframework/data/jdbc/core/PersistentPropertyPathExtensionUnitTests.java index 542aee09cf..af3a0ce206 100644 --- a/spring-data-jdbc/src/test/java/org/springframework/data/jdbc/core/PersistentPropertyPathExtensionUnitTests.java +++ b/spring-data-jdbc/src/test/java/org/springframework/data/jdbc/core/PersistentPropertyPathExtensionUnitTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2021 the original author or authors. + * Copyright 2019-2022 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -32,6 +32,7 @@ /** * @author Jens Schauder + * @author Daniil Razorenov */ public class PersistentPropertyPathExtensionUnitTests { @@ -126,6 +127,7 @@ public void getTableAlias() { softly.assertThat(extPath("secondList.third.value").getTableAlias()).isEqualTo(quoted("secondList_third")); softly.assertThat(extPath("secondList").getTableAlias()).isEqualTo(quoted("secondList")); softly.assertThat(extPath("second2.third").getTableAlias()).isEqualTo(quoted("secthird")); + softly.assertThat(extPath("second3.third").getTableAlias()).isEqualTo(quoted("second3third")); }); } @@ -217,6 +219,7 @@ static class DummyEntity { @Id Long entityId; Second second; @Embedded(onEmpty = OnEmpty.USE_NULL, prefix = "sec") Second second2; + @Embedded(onEmpty = OnEmpty.USE_NULL) Second second3; List secondList; WithId withId; } diff --git a/spring-data-jdbc/src/test/java/org/springframework/data/jdbc/repository/JdbcRepositoryEmbeddedWithReferenceIntegrationTests.java b/spring-data-jdbc/src/test/java/org/springframework/data/jdbc/repository/JdbcRepositoryEmbeddedWithReferenceIntegrationTests.java index 0b850b7fa8..d396ba02e3 100644 --- a/spring-data-jdbc/src/test/java/org/springframework/data/jdbc/repository/JdbcRepositoryEmbeddedWithReferenceIntegrationTests.java +++ b/spring-data-jdbc/src/test/java/org/springframework/data/jdbc/repository/JdbcRepositoryEmbeddedWithReferenceIntegrationTests.java @@ -277,6 +277,8 @@ private static class DummyEntity { String test; @Embedded(onEmpty = OnEmpty.USE_NULL, prefix = "PREFIX_") Embeddable embeddable; + + @Embedded(onEmpty = OnEmpty.USE_NULL) Embeddable2 embeddable2; } @Data @@ -287,6 +289,12 @@ private static class Embeddable { String test; } + @Data + private static class Embeddable2 { + + @Column("ID") DummyEntity2 dummyEntity2; + } + @Data private static class DummyEntity2 { diff --git a/spring-data-relational/src/main/java/org/springframework/data/relational/core/mapping/PersistentPropertyPathExtension.java b/spring-data-relational/src/main/java/org/springframework/data/relational/core/mapping/PersistentPropertyPathExtension.java index e06ebcdbef..e8668ad716 100644 --- a/spring-data-relational/src/main/java/org/springframework/data/relational/core/mapping/PersistentPropertyPathExtension.java +++ b/spring-data-relational/src/main/java/org/springframework/data/relational/core/mapping/PersistentPropertyPathExtension.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2021 the original author or authors. + * Copyright 2019-2022 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -31,6 +31,7 @@ * available used in SQL generation and conversion * * @author Jens Schauder + * @author Daniil Razorenov * @since 1.1 */ public class PersistentPropertyPathExtension { @@ -389,7 +390,12 @@ private SqlIdentifier assembleTableAlias() { Assert.state(path != null, "Path is null"); RelationalPersistentProperty leafProperty = path.getRequiredLeafProperty(); - String prefix = isEmbedded() ? leafProperty.getEmbeddedPrefix() : leafProperty.getName(); + String prefix; + if (isEmbedded() && (leafProperty.getEmbeddedPrefix() == null || !leafProperty.getEmbeddedPrefix().isEmpty())) { + prefix = leafProperty.getEmbeddedPrefix(); + } else { + prefix = leafProperty.getName(); + } if (path.getLength() == 1) { Assert.notNull(prefix, "Prefix mus not be null.");