2020import org .hibernate .type .Type ;
2121import org .hibernate .type .descriptor .java .StringJavaType ;
2222import org .hibernate .type .descriptor .jdbc .spi .JdbcTypeRegistry ;
23+ import org .hibernate .type .internal .BasicTypeImpl ;
2324import org .hibernate .type .internal .ConvertedBasicTypeImpl ;
2425
2526import org .hibernate .testing .junit4 .BaseUnitTestCase ;
@@ -82,10 +83,27 @@ public void testDefinitionAtAttributeLevel() {
8283
8384 PersistentClass pc = metadata .getEntityBinding ( TheEntity .class .getName () );
8485 BasicType <?> type = (BasicType <?>) pc .getProperty ( "it" ).getType ();
86+ assertTyping ( BasicTypeImpl .class , type ); // Should not be ConvertedBasicTypeImpl in particular
8587 assertTyping ( StringJavaType .class , type .getJavaTypeDescriptor () );
8688 assertTyping ( jdbcTypeRegistry .getDescriptor ( Types .VARCHAR ).getClass (), type .getJdbcType () );
8789 }
8890
91+ /**
92+ * A baseline test, with an explicit @Convert annotation at entity level that should be in effect
93+ */
94+ @ Test
95+ public void baselineAtEntityLevel () {
96+ Metadata metadata = new MetadataSources ( ssr )
97+ .addAnnotatedClass ( TheEntity2 .class )
98+ .buildMetadata ();
99+
100+ PersistentClass pc = metadata .getEntityBinding ( TheEntity2 .class .getName () );
101+ Type type = pc .getProperty ( "it" ).getType ();
102+ ConvertedBasicTypeImpl adapter = assertTyping ( ConvertedBasicTypeImpl .class , type );
103+ final JpaAttributeConverter converter = (JpaAttributeConverter ) adapter .getValueConverter ();
104+ assertTrue ( SillyStringConverter .class .isAssignableFrom ( converter .getConverterJavaType ().getJavaTypeClass () ) );
105+ }
106+
89107 /**
90108 * Test outcome of applying overrides via orm.xml, specifically at the entity level
91109 */
@@ -101,6 +119,7 @@ public void testDefinitionAtEntityLevel() {
101119
102120 PersistentClass pc = metadata .getEntityBinding ( TheEntity2 .class .getName () );
103121 BasicType <?> type = (BasicType <?>) pc .getProperty ( "it" ).getType ();
122+ assertTyping ( BasicTypeImpl .class , type ); // Should not be ConvertedBasicTypeImpl in particular
104123 assertTyping ( StringJavaType .class , type .getJavaTypeDescriptor () );
105124 assertTyping ( jdbcTypeRegistry .getDescriptor ( Types .VARCHAR ).getClass (), type .getJdbcType () );
106125 }
0 commit comments