23
23
*/
24
24
package org .hibernate .jpa .test .convert ;
25
25
26
- import javax .persistence .Convert ;
27
- import javax .persistence .Entity ;
28
- import javax .persistence .EntityManagerFactory ;
29
- import javax .persistence .Id ;
30
- import javax .persistence .MappedSuperclass ;
31
-
32
26
import java .util .Arrays ;
33
27
import java .util .Collections ;
34
28
import java .util .HashMap ;
35
29
import java .util .List ;
36
30
import java .util .Map ;
31
+ import javax .persistence .Convert ;
32
+ import javax .persistence .Entity ;
33
+ import javax .persistence .EntityManagerFactory ;
34
+ import javax .persistence .Id ;
37
35
38
- import org .hibernate .cfg .AvailableSettings ;
39
36
import org .hibernate .engine .spi .SessionFactoryImplementor ;
40
37
import org .hibernate .jpa .boot .spi .Bootstrap ;
41
38
import org .hibernate .jpa .test .PersistenceUnitDescriptorAdapter ;
42
39
import org .hibernate .persister .entity .EntityPersister ;
43
40
import org .hibernate .type .StringType ;
44
41
import org .hibernate .type .Type ;
42
+ import org .hibernate .type .descriptor .converter .AttributeConverterTypeAdapter ;
45
43
46
- import org .junit .Test ;
47
-
48
- import org .hibernate .testing .FailureExpected ;
49
44
import org .hibernate .testing .junit4 .BaseUnitTestCase ;
45
+ import org .junit .Test ;
50
46
51
47
import static org .hibernate .testing .junit4 .ExtraAssertions .assertTyping ;
52
- import static org .junit .Assert .fail ;
53
48
54
49
/**
55
50
* Test simple application of Convert annotation via XML.
56
51
*
57
52
* @author Steve Ebersole
58
53
*/
59
54
public class SimpleXmlOverriddenTest extends BaseUnitTestCase {
55
+ /**
56
+ * A baseline test, with an explicit @Convert annotation that should be in effect
57
+ */
60
58
@ Test
61
59
public void baseline () {
62
60
final PersistenceUnitDescriptorAdapter pu = new PersistenceUnitDescriptorAdapter () {
63
61
@ Override
64
62
public List <String > getManagedClassNames () {
65
- return Arrays .asList ( Super . class . getName (), Sub .class .getName () );
63
+ return Arrays .asList ( TheEntity .class .getName () );
66
64
}
67
65
68
66
// No mapping file should mean that the converter is applied
@@ -74,30 +72,26 @@ public List<String> getManagedClassNames() {
74
72
75
73
final SessionFactoryImplementor sfi = emf .unwrap ( SessionFactoryImplementor .class );
76
74
try {
77
- final EntityPersister ep = sfi .getEntityPersister ( Sub .class .getName () );
75
+ final EntityPersister ep = sfi .getEntityPersister ( TheEntity .class .getName () );
78
76
79
77
Type type = ep .getPropertyType ( "it" );
80
- try {
81
- assertTyping ( StringType .class , type );
82
- fail ( "Expected AttributeConverter to be applied" );
83
- }
84
- catch (AssertionError expected ) {
85
- }
78
+ AttributeConverterTypeAdapter adapter = assertTyping ( AttributeConverterTypeAdapter .class , type );
79
+ assertTyping ( SillyStringConverter .class , adapter .getAttributeConverter () );
86
80
}
87
81
finally {
88
82
emf .close ();
89
83
}
90
84
}
91
85
92
86
/**
93
- * Test outcome of applying overrides via orm.xml, specifically at the entity level
87
+ * Test outcome of applying overrides via orm.xml, specifically at the attribute level
94
88
*/
95
89
@ Test
96
- public void testDefinitionAtEntityLevel () {
90
+ public void testDefinitionAtAttributeLevel () {
97
91
final PersistenceUnitDescriptorAdapter pu = new PersistenceUnitDescriptorAdapter () {
98
92
@ Override
99
93
public List <String > getManagedClassNames () {
100
- return Arrays .asList ( Super . class . getName (), Sub .class .getName () );
94
+ return Arrays .asList ( TheEntity .class .getName () );
101
95
}
102
96
103
97
@ Override
@@ -107,13 +101,11 @@ public List<String> getMappingFileNames() {
107
101
};
108
102
109
103
final Map settings = new HashMap ();
110
- // settings.put( AvailableSettings.HBM2DDL_AUTO, "create-drop" );
111
-
112
104
EntityManagerFactory emf = Bootstrap .getEntityManagerFactoryBuilder ( pu , settings ).build ();
113
105
114
106
final SessionFactoryImplementor sfi = emf .unwrap ( SessionFactoryImplementor .class );
115
107
try {
116
- final EntityPersister ep = sfi .getEntityPersister ( Sub .class .getName () );
108
+ final EntityPersister ep = sfi .getEntityPersister ( TheEntity .class .getName () );
117
109
118
110
Type type = ep .getPropertyType ( "it" );
119
111
assertTyping ( StringType .class , type );
@@ -127,11 +119,11 @@ public List<String> getMappingFileNames() {
127
119
* Test outcome of applying overrides via orm.xml, specifically at the entity level
128
120
*/
129
121
@ Test
130
- public void testDefinitionAtAttributeLevel () {
122
+ public void testDefinitionAtEntityLevel () {
131
123
final PersistenceUnitDescriptorAdapter pu = new PersistenceUnitDescriptorAdapter () {
132
124
@ Override
133
125
public List <String > getManagedClassNames () {
134
- return Arrays .asList ( Super . class . getName (), Sub .class .getName () );
126
+ return Arrays .asList ( TheEntity2 .class .getName () );
135
127
}
136
128
137
129
@ Override
@@ -141,13 +133,11 @@ public List<String> getMappingFileNames() {
141
133
};
142
134
143
135
final Map settings = new HashMap ();
144
- // settings.put( AvailableSettings.HBM2DDL_AUTO, "create-drop" );
145
-
146
136
EntityManagerFactory emf = Bootstrap .getEntityManagerFactoryBuilder ( pu , settings ).build ();
147
137
148
138
final SessionFactoryImplementor sfi = emf .unwrap ( SessionFactoryImplementor .class );
149
139
try {
150
- final EntityPersister ep = sfi .getEntityPersister ( Sub .class .getName () );
140
+ final EntityPersister ep = sfi .getEntityPersister ( TheEntity2 .class .getName () );
151
141
152
142
Type type = ep .getPropertyType ( "it" );
153
143
assertTyping ( StringType .class , type );
@@ -157,18 +147,19 @@ public List<String> getMappingFileNames() {
157
147
}
158
148
}
159
149
160
- @ MappedSuperclass
161
- public static class Super {
150
+ @ Entity ( name = "TheEntity" )
151
+ public static class TheEntity {
162
152
@ Id
163
153
public Integer id ;
164
154
@ Convert (converter = SillyStringConverter .class )
165
155
public String it ;
166
156
}
167
157
168
- @ Entity (name = "Sub" )
169
- // the xml disabled conversion on the Sub#it attribute
170
- // Essentially the same test as org.hibernate.jpa.test.convert.SimpleOverriddenConverterTest, but through XML
171
- //@Convert( attributeName = "it", disableConversion = true )
172
- public static class Sub extends Super {
158
+ @ Entity (name ="TheEntity2" )
159
+ @ Convert ( attributeName = "it" , converter = SillyStringConverter .class )
160
+ public static class TheEntity2 {
161
+ @ Id
162
+ public Integer id ;
163
+ public String it ;
173
164
}
174
165
}
0 commit comments