From a1fa1fde626d5d3549beca393b261ddad57f1e65 Mon Sep 17 00:00:00 2001 From: Sylvain Lecoy Date: Sun, 15 Jun 2025 21:17:00 +0200 Subject: [PATCH 1/2] HHH-19542: Test showing the failure --- .../RecordEmbeddableAsSecondaryTableTest.java | 76 +++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 hibernate-core/src/test/java17/org/hibernate/orm/test/records/RecordEmbeddableAsSecondaryTableTest.java diff --git a/hibernate-core/src/test/java17/org/hibernate/orm/test/records/RecordEmbeddableAsSecondaryTableTest.java b/hibernate-core/src/test/java17/org/hibernate/orm/test/records/RecordEmbeddableAsSecondaryTableTest.java new file mode 100644 index 000000000000..079b8a6586f0 --- /dev/null +++ b/hibernate-core/src/test/java17/org/hibernate/orm/test/records/RecordEmbeddableAsSecondaryTableTest.java @@ -0,0 +1,76 @@ +package org.hibernate.orm.test.records; + +import jakarta.persistence.*; +import org.hibernate.testing.bytecode.enhancement.EnhancementOptions; +import org.hibernate.testing.bytecode.enhancement.extension.BytecodeEnhanced; +import org.hibernate.testing.orm.junit.DomainModel; +import org.hibernate.testing.orm.junit.JiraKey; +import org.hibernate.testing.orm.junit.SessionFactory; +import org.hibernate.testing.orm.junit.SessionFactoryScope; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; + +import static org.assertj.core.api.Assertions.assertThat; + +@JiraKey("HHH-19542") +@DomainModel( + annotatedClasses = { + RecordEmbeddableAsSecondaryTableTest.User.class + }) +@SessionFactory +@BytecodeEnhanced +@EnhancementOptions(lazyLoading = true, extendedEnhancement = true, inlineDirtyChecking = true) +public class RecordEmbeddableAsSecondaryTableTest { + + @BeforeAll + public void prepare(SessionFactoryScope scope) { + scope.inTransaction(session -> { + Person person = new Person(new FullName("Sylvain", "Lecoy"), 38); + + User user = new User(1, person); + + session.persist( user ); + }); + } + + @Test + public void testGetEntityA(SessionFactoryScope scope) { + scope.inTransaction(session -> { + User user = session.get(User.class, 1); + assertThat( user ).isNotNull(); + }); + } + + @Entity + @SecondaryTable(name = "Person") + public static class User { + @Id + private Integer id; + + private Person person; + + public User( + final Integer id, + final Person person) { + this.id = id; + this.person = person; + } + + protected User() { + + } + } + + @Embeddable + public record Person( // If we invert, and put age as first argument, the test passes. + FullName fullName, + @Column(table = "Person") + Integer age) { + } + + @Embeddable + public record FullName( + String firstName, + String lastName) { + } +} From 451d19a7ff457219d62c2a4584db12a2edfadf40 Mon Sep 17 00:00:00 2001 From: Sylvain Lecoy Date: Sun, 15 Jun 2025 21:20:41 +0200 Subject: [PATCH 2/2] HHH-19542: Test showing the failure --- .../orm/test/records/RecordEmbeddableAsSecondaryTableTest.java | 1 + 1 file changed, 1 insertion(+) diff --git a/hibernate-core/src/test/java17/org/hibernate/orm/test/records/RecordEmbeddableAsSecondaryTableTest.java b/hibernate-core/src/test/java17/org/hibernate/orm/test/records/RecordEmbeddableAsSecondaryTableTest.java index 079b8a6586f0..6a3ad4c99a4a 100644 --- a/hibernate-core/src/test/java17/org/hibernate/orm/test/records/RecordEmbeddableAsSecondaryTableTest.java +++ b/hibernate-core/src/test/java17/org/hibernate/orm/test/records/RecordEmbeddableAsSecondaryTableTest.java @@ -44,6 +44,7 @@ public void testGetEntityA(SessionFactoryScope scope) { @Entity @SecondaryTable(name = "Person") public static class User { + @Id private Integer id;