Skip to content

Commit adf8e41

Browse files
committed
HHH-18957 - Add test for issue
Signed-off-by: Jan Schatteman <[email protected]>
1 parent 47f4af9 commit adf8e41

File tree

2 files changed

+90
-2
lines changed

2 files changed

+90
-2
lines changed
Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
/*
2+
* SPDX-License-Identifier: Apache-2.0
3+
* Copyright Red Hat Inc. and Hibernate Authors
4+
*/
5+
package org.hibernate.orm.test.records;
6+
7+
import jakarta.persistence.ElementCollection;
8+
import jakarta.persistence.Embeddable;
9+
import jakarta.persistence.Entity;
10+
import jakarta.persistence.FetchType;
11+
import jakarta.persistence.Id;
12+
import jakarta.persistence.OrderColumn;
13+
import jakarta.persistence.OrderBy;
14+
import org.hibernate.testing.orm.junit.DomainModel;
15+
import org.hibernate.testing.orm.junit.Jira;
16+
import org.hibernate.testing.orm.junit.SessionFactory;
17+
import org.hibernate.testing.orm.junit.SessionFactoryScope;
18+
import org.junit.jupiter.api.Test;
19+
20+
import java.util.ArrayList;
21+
import java.util.List;
22+
23+
import static org.junit.jupiter.api.Assertions.assertEquals;
24+
25+
/**
26+
* @author Jan Schatteman
27+
*/
28+
@SessionFactory
29+
@DomainModel(annotatedClasses = {ElementCollectionOfRecordsTest.MainEntity.class})
30+
public class ElementCollectionOfRecordsTest {
31+
32+
@Test
33+
@Jira( "https://hibernate.atlassian.net/browse/HHH-18957" )
34+
public void testInsertOrderOfRecordsInElementCollection(SessionFactoryScope scope) {
35+
scope.inTransaction(
36+
session -> {
37+
MainEntity me = new MainEntity();
38+
me.setId( 1L );
39+
me.addRecord( new Record( "c", "a", "b", 2L ) );
40+
me.addRecord( new Record( "2c", "a2", "bb", 22L ) );
41+
session.persist( me );
42+
}
43+
);
44+
scope.inTransaction(
45+
session -> {
46+
MainEntity me = session.find( MainEntity.class, 1L );
47+
List<Record> records = me.getRecords();
48+
assertEquals(2, records.size());
49+
Record r = records.get( 0 );
50+
assertEquals("a", r.aField);
51+
assertEquals("b", r.bField);
52+
assertEquals("c", r.cField);
53+
assertEquals(2L, r.longField);
54+
r = records.get( 1 );
55+
assertEquals("a2", r.aField);
56+
assertEquals("bb", r.bField);
57+
assertEquals("2c", r.cField);
58+
assertEquals(22L, r.longField);
59+
}
60+
);
61+
}
62+
63+
@Entity(name = "MainEntity")
64+
public static class MainEntity {
65+
@Id
66+
Long id;
67+
68+
@OrderColumn
69+
@ElementCollection(fetch = FetchType.EAGER)
70+
@OrderBy("longField")
71+
List<Record> records = new ArrayList<>();
72+
73+
public void setId(Long id) {
74+
this.id = id;
75+
}
76+
77+
public void addRecord(Record r) {
78+
this.records.add( r );
79+
}
80+
81+
public List<Record> getRecords() {
82+
return records;
83+
}
84+
}
85+
86+
@Embeddable
87+
public record Record(String cField, String aField, String bField, Long longField) {}
88+
}

hibernate-core/src/test/java/org/hibernate/orm/test/records/GenericEnbeddedIdRecordTest.java renamed to hibernate-core/src/test/java/org/hibernate/orm/test/records/GenericEmbeddedIdRecordTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,8 @@
2828
import static org.junit.jupiter.api.Assertions.assertNotNull;
2929

3030
@SessionFactory
31-
@DomainModel(annotatedClasses = {GenericEnbeddedIdRecordTest.MainEntity.class, GenericEnbeddedIdRecordTest.ReferencedEntity.class})
32-
class GenericEnbeddedIdRecordTest {
31+
@DomainModel(annotatedClasses = {GenericEmbeddedIdRecordTest.MainEntity.class, GenericEmbeddedIdRecordTest.ReferencedEntity.class})
32+
class GenericEmbeddedIdRecordTest {
3333

3434
@Test
3535
void testOverrideJoinColumn(SessionFactoryScope scope) {

0 commit comments

Comments
 (0)