HHH-18445 Add test for issue
This commit is contained in:
parent
3001b7f01d
commit
f9a4efaa8f
|
@ -0,0 +1,152 @@
|
||||||
|
/*
|
||||||
|
* Hibernate, Relational Persistence for Idiomatic Java
|
||||||
|
*
|
||||||
|
* License: GNU Lesser General Public License (LGPL), version 2.1 or later
|
||||||
|
* See the lgpl.txt file in the root directory or http://www.gnu.org/licenses/lgpl-2.1.html
|
||||||
|
*/
|
||||||
|
package org.hibernate.orm.test.records;
|
||||||
|
|
||||||
|
import org.hibernate.testing.orm.junit.DomainModel;
|
||||||
|
import org.hibernate.testing.orm.junit.Jira;
|
||||||
|
import org.hibernate.testing.orm.junit.SessionFactory;
|
||||||
|
import org.hibernate.testing.orm.junit.SessionFactoryScope;
|
||||||
|
import org.junit.jupiter.api.AfterAll;
|
||||||
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
import jakarta.persistence.Embeddable;
|
||||||
|
import jakarta.persistence.Embedded;
|
||||||
|
import jakarta.persistence.Entity;
|
||||||
|
import jakarta.persistence.Id;
|
||||||
|
|
||||||
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Marco Belladelli
|
||||||
|
*/
|
||||||
|
@DomainModel( annotatedClasses = {
|
||||||
|
RecordEmbeddedPropertyNamesTest.Fee.class,
|
||||||
|
RecordEmbeddedPropertyNamesTest.Getaway.class,
|
||||||
|
RecordEmbeddedPropertyNamesTest.Vacation.class,
|
||||||
|
RecordEmbeddedPropertyNamesTest.TestFee.class,
|
||||||
|
RecordEmbeddedPropertyNamesTest.TestGetaway.class,
|
||||||
|
RecordEmbeddedPropertyNamesTest.TestVacation.class,
|
||||||
|
} )
|
||||||
|
@SessionFactory
|
||||||
|
@Jira( "https://hibernate.atlassian.net/browse/HHH-18445" )
|
||||||
|
public class RecordEmbeddedPropertyNamesTest {
|
||||||
|
@Test
|
||||||
|
public void testFee(SessionFactoryScope scope) {
|
||||||
|
scope.inTransaction( session -> {
|
||||||
|
final TestFee result = session.find( TestFee.class, 1L );
|
||||||
|
assertThat( result.getFee().issuedA() ).isFalse();
|
||||||
|
assertThat( result.getFee().issuedB() ).isTrue();
|
||||||
|
} );
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testGetaway(SessionFactoryScope scope) {
|
||||||
|
scope.inTransaction( session -> {
|
||||||
|
final TestGetaway result = session.find( TestGetaway.class, 1L );
|
||||||
|
assertThat( result.getGetaway().getawayA() ).isEqualTo( "A" );
|
||||||
|
assertThat( result.getGetaway().getawayB() ).isEqualTo( "B" );
|
||||||
|
} );
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testVacation(SessionFactoryScope scope) {
|
||||||
|
scope.inTransaction( session -> {
|
||||||
|
final TestVacation result = session.find( TestVacation.class, 1L );
|
||||||
|
assertThat( result.getVacation().amount() ).isEqualTo( 7 );
|
||||||
|
assertThat( result.getVacation().issued() ).isTrue();
|
||||||
|
} );
|
||||||
|
}
|
||||||
|
|
||||||
|
@BeforeAll
|
||||||
|
public void setUp(SessionFactoryScope scope) {
|
||||||
|
scope.inTransaction( session -> {
|
||||||
|
session.persist( new TestFee( 1L, new Fee( true, false ) ) );
|
||||||
|
session.persist( new TestGetaway( 1L, new Getaway( "B", "A" ) ) );
|
||||||
|
session.persist( new TestVacation( 1L, new Vacation( true, 7 ) ) );
|
||||||
|
} );
|
||||||
|
}
|
||||||
|
|
||||||
|
@AfterAll
|
||||||
|
public void tearDown(SessionFactoryScope scope) {
|
||||||
|
scope.getSessionFactory().getSchemaManager().truncateMappedObjects();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Embeddable
|
||||||
|
public record Fee(Boolean issuedB, Boolean issuedA) {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Entity( name = "TestFee" )
|
||||||
|
static class TestFee {
|
||||||
|
@Id
|
||||||
|
private Long id;
|
||||||
|
@Embedded
|
||||||
|
private Fee fee;
|
||||||
|
|
||||||
|
public TestFee() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public TestFee(Long id, Fee fee) {
|
||||||
|
this.id = id;
|
||||||
|
this.fee = fee;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Fee getFee() {
|
||||||
|
return fee;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Embeddable
|
||||||
|
record Getaway(String getawayB, String getawayA) {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Entity( name = "TestGetaway" )
|
||||||
|
static class TestGetaway {
|
||||||
|
@Id
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
@Embedded
|
||||||
|
private Getaway getaway;
|
||||||
|
|
||||||
|
public TestGetaway() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public TestGetaway(Long id, Getaway getaway) {
|
||||||
|
this.id = id;
|
||||||
|
this.getaway = getaway;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Getaway getGetaway() {
|
||||||
|
return getaway;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Embeddable
|
||||||
|
record Vacation(Boolean issued, Integer amount) {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Entity( name = "TestVacation" )
|
||||||
|
static class TestVacation {
|
||||||
|
@Id
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
@Embedded
|
||||||
|
private Vacation vacation;
|
||||||
|
|
||||||
|
public TestVacation() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public TestVacation(Long id, Vacation vacation) {
|
||||||
|
this.id = id;
|
||||||
|
this.vacation = vacation;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Vacation getVacation() {
|
||||||
|
return vacation;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue