Skip to content

Commit 0765dce

Browse files
committed
HHH-2988 test case
1 parent 01a2ca7 commit 0765dce

File tree

1 file changed

+71
-1
lines changed

1 file changed

+71
-1
lines changed

hibernate-core/src/test/java/org/hibernate/test/quote/QuoteTest.java

Lines changed: 71 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,21 @@
2626
import static org.junit.Assert.assertEquals;
2727
import static org.junit.Assert.assertNotNull;
2828

29+
import java.util.HashSet;
30+
import java.util.Set;
31+
32+
import javax.persistence.Column;
33+
import javax.persistence.Entity;
34+
import javax.persistence.FetchType;
35+
import javax.persistence.GeneratedValue;
36+
import javax.persistence.Id;
37+
import javax.persistence.Inheritance;
38+
import javax.persistence.InheritanceType;
39+
import javax.persistence.JoinColumn;
40+
import javax.persistence.ManyToOne;
41+
import javax.persistence.OneToMany;
42+
import javax.persistence.Table;
43+
2944
import org.hibernate.Session;
3045
import org.hibernate.Transaction;
3146
import org.hibernate.testing.TestForIssue;
@@ -34,6 +49,7 @@
3449

3550
/**
3651
* @author Emmanuel Bernard
52+
* @author Brett Meyer
3753
*/
3854
public class QuoteTest extends BaseCoreFunctionalTestCase {
3955

@@ -80,14 +96,68 @@ public void testDoubleQuoteJoinColumn() {
8096
s.getTransaction().commit();
8197
s.close();
8298
}
99+
100+
@Test
101+
@TestForIssue(jiraKey = "HHH-2988")
102+
public void testUnionSubclassEntityQuoting() {
103+
Session s = openSession();
104+
s.beginTransaction();
105+
Container container1 = new Container();
106+
Container container2 = new Container();
107+
SimpleItem simpleItem = new SimpleItem();
108+
109+
container1.items.add( container2 );
110+
container1.items.add( simpleItem );
111+
container2.parent = container1;
112+
simpleItem.parent = container1;
113+
114+
s.persist( simpleItem );
115+
s.persist( container2 );
116+
s.persist( container1 );
117+
s.getTransaction().commit();
118+
s.clear();
119+
120+
Container result = (Container) s.get( Container.class, container1.id );
121+
assertNotNull( result );
122+
assertNotNull( result.items );
123+
assertEquals( 2, result.items.size() );
124+
}
83125

84126
@Override
85127
protected Class[] getAnnotatedClasses() {
86128
return new Class[] {
87129
User.class,
88130
Role.class,
89131
Phone.class,
90-
House.class
132+
House.class,
133+
Container.class,
134+
SimpleItem.class
91135
};
92136
}
137+
138+
@Entity
139+
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
140+
private static abstract class Item {
141+
142+
@Id @GeneratedValue
143+
@Column(name = "`ID`")
144+
protected long id;
145+
146+
@ManyToOne(fetch = FetchType.LAZY)
147+
@JoinColumn(name = "`ParentID`")
148+
protected Container parent;
149+
}
150+
151+
@Entity
152+
@Table(name = "`CoNTaiNeR`")
153+
private static class Container extends Item {
154+
155+
@OneToMany(mappedBy = "parent", targetEntity = Item.class)
156+
private Set<Item> items = new HashSet<Item>( 0 );
157+
}
158+
159+
@Entity
160+
@Table(name = "`SimpleItem`")
161+
private static class SimpleItem extends Item {
162+
}
93163
}

0 commit comments

Comments
 (0)