Skip to content

Commit 2d51874

Browse files
committed
HHH-18693 Test case for Jakarta Data processing
1 parent c0bc9f6 commit 2d51874

File tree

3 files changed

+239
-0
lines changed

3 files changed

+239
-0
lines changed
Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
/*
2+
* SPDX-License-Identifier: LGPL-2.1-or-later
3+
* Copyright Red Hat Inc. and Hibernate Authors
4+
*/
5+
package org.hibernate.processor.test.data.innerclass;
6+
7+
import jakarta.persistence.Column;
8+
import jakarta.persistence.Embeddable;
9+
import jakarta.persistence.Entity;
10+
import jakarta.persistence.GeneratedValue;
11+
import jakarta.persistence.Id;
12+
import jakarta.persistence.MappedSuperclass;
13+
import jakarta.persistence.NamedQuery;
14+
15+
public class Dummy {
16+
@Entity(name = "Inner")
17+
@NamedQuery(name = "allInner", query = "from Inner")
18+
public static class Inner extends Persona {
19+
@Id
20+
Integer id;
21+
22+
String name;
23+
24+
public Integer getId() {
25+
return id;
26+
}
27+
28+
@Override
29+
public void setId(Integer id) {
30+
this.id = id;
31+
}
32+
33+
@Override
34+
public String getName() {
35+
return name;
36+
}
37+
38+
@Override
39+
public void setName(String name) {
40+
this.name = name;
41+
}
42+
}
43+
44+
@Embeddable
45+
public static class DummyEmbeddable {
46+
private String name;
47+
private int value;
48+
49+
public String getName() {
50+
return name;
51+
}
52+
53+
public void setName(String name) {
54+
this.name = name;
55+
}
56+
57+
public int getValue() {
58+
return value;
59+
}
60+
61+
public void setValue(int value) {
62+
this.value = value;
63+
}
64+
}
65+
66+
@MappedSuperclass
67+
public abstract static class Persona {
68+
private String city;
69+
70+
public String getCity() {
71+
return city;
72+
}
73+
74+
public void setCity(String city) {
75+
this.city = city;
76+
}
77+
78+
public abstract void setId(Integer id);
79+
80+
public abstract String getName();
81+
82+
public abstract void setName(String name);
83+
}
84+
85+
@Entity(name = "The Person")
86+
@NamedQuery(
87+
name = "#selectThePersonName",
88+
query = "select `upper`(`the person`.`name`) as `The person name` from `The Person` `the person`"
89+
)
90+
public static class ThePerson {
91+
92+
@Id
93+
@GeneratedValue
94+
Integer id;
95+
96+
@Column(name = "the name")
97+
String name;
98+
99+
@Column
100+
String surname;
101+
}
102+
}
Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
/*
2+
* SPDX-License-Identifier: LGPL-2.1-or-later
3+
* Copyright Red Hat Inc. and Hibernate Authors
4+
*/
5+
package org.hibernate.processor.test.data.innerclass;
6+
7+
import jakarta.persistence.Entity;
8+
import jakarta.persistence.EntityManager;
9+
import jakarta.persistence.Id;
10+
import jakarta.persistence.NamedQuery;
11+
import org.hibernate.processor.test.data.innerclass.InnerClassTest.One.Two;
12+
import org.hibernate.processor.test.util.CompilationTest;
13+
import org.hibernate.processor.test.util.WithClasses;
14+
import org.junit.Test;
15+
16+
import static org.hibernate.processor.test.util.TestUtil.assertMetamodelClassGeneratedFor;
17+
import static org.hibernate.processor.test.util.TestUtil.assertNoMetamodelClassGeneratedFor;
18+
import static org.hibernate.processor.test.util.TestUtil.assertPresenceOfFieldInMetamodelFor;
19+
import static org.hibernate.processor.test.util.TestUtil.assertPresenceOfMethodInMetamodelFor;
20+
import static org.hibernate.processor.test.util.TestUtil.getMetaModelSourceAsString;
21+
import static org.junit.Assert.assertEquals;
22+
23+
public class InnerClassTest extends CompilationTest {
24+
25+
@WithClasses({Person.class, Dummy.class, Inner.class, Two.class})
26+
@Test
27+
public void test() {
28+
System.out.println( getMetaModelSourceAsString( InnerClassTest.class ) );
29+
System.out.println( getMetaModelSourceAsString( Dummy.class ) );
30+
System.out.println( getMetaModelSourceAsString( Person.class ) );
31+
System.out.println( getMetaModelSourceAsString( InnerClassTest.class, true ) );
32+
System.out.println( getMetaModelSourceAsString( Dummy.class, true ) );
33+
System.out.println( getMetaModelSourceAsString( Person.class, true ) );
34+
assertEquals(
35+
getMetaModelSourceAsString( Inner.class ),
36+
getMetaModelSourceAsString( Two.class )
37+
);
38+
assertEquals(
39+
getMetaModelSourceAsString( Inner.class, true ),
40+
getMetaModelSourceAsString( Two.class, true )
41+
);
42+
assertMetamodelClassGeneratedFor( Inner.class );
43+
assertMetamodelClassGeneratedFor( Inner.class, true );
44+
assertMetamodelClassGeneratedFor( Two.class );
45+
assertMetamodelClassGeneratedFor( Two.class, true );
46+
assertMetamodelClassGeneratedFor( Dummy.Inner.class );
47+
assertMetamodelClassGeneratedFor( Dummy.Inner.class, true );
48+
assertMetamodelClassGeneratedFor( Person.class );
49+
assertMetamodelClassGeneratedFor( Person.class, true );
50+
assertMetamodelClassGeneratedFor( Person.PersonId.class );
51+
assertNoMetamodelClassGeneratedFor( Dummy.class );
52+
assertMetamodelClassGeneratedFor( Dummy.DummyEmbeddable.class );
53+
assertMetamodelClassGeneratedFor( Dummy.ThePerson.class );
54+
assertMetamodelClassGeneratedFor( Dummy.ThePerson.class, true );
55+
/*assertNoMetamodelClassGeneratedFor( Dummy.class );*/
56+
assertPresenceOfFieldInMetamodelFor( Dummy.ThePerson.class, "QUERY_SELECT_THE_PERSON_NAME" );
57+
assertPresenceOfMethodInMetamodelFor( Dummy.ThePerson.class, "selectThePersonName", EntityManager.class );
58+
}
59+
60+
@Entity(name = "Inner")
61+
@NamedQuery(name = "allInner", query = "from Inner")
62+
public static class Inner {
63+
@Id
64+
Integer id;
65+
66+
String address;
67+
68+
public Integer getId() {
69+
return id;
70+
}
71+
72+
public void setId(Integer id) {
73+
this.id = id;
74+
}
75+
76+
public String getAddress() {
77+
return address;
78+
}
79+
80+
public void setAddress(String address) {
81+
this.address = address;
82+
}
83+
}
84+
85+
static class One {
86+
@Entity
87+
static class Two {
88+
@Id
89+
Integer id;
90+
String value;
91+
}
92+
}
93+
}
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
/*
2+
* SPDX-License-Identifier: LGPL-2.1-or-later
3+
* Copyright Red Hat Inc. and Hibernate Authors
4+
*/
5+
package org.hibernate.processor.test.data.innerclass;
6+
7+
import jakarta.persistence.Embeddable;
8+
import jakarta.persistence.EmbeddedId;
9+
import jakarta.persistence.Entity;
10+
11+
/**
12+
* @author Hardy Ferentschik
13+
*/
14+
@Entity
15+
public class Person {
16+
@EmbeddedId
17+
private PersonId id;
18+
19+
private String address;
20+
21+
@Embeddable
22+
public static class PersonId {
23+
private String name;
24+
private String snn;
25+
26+
public String getName() {
27+
return name;
28+
}
29+
30+
public void setName(String name) {
31+
this.name = name;
32+
}
33+
34+
public String getSnn() {
35+
return snn;
36+
}
37+
38+
public void setSnn(String snn) {
39+
this.snn = snn;
40+
}
41+
}
42+
43+
44+
}

0 commit comments

Comments
 (0)