diff --git a/hibernate-core/src/main/java/org/hibernate/type/BasicArrayType.java b/hibernate-core/src/main/java/org/hibernate/type/BasicArrayType.java index a2bf4c36a264..b19df61aded6 100644 --- a/hibernate-core/src/main/java/org/hibernate/type/BasicArrayType.java +++ b/hibernate-core/src/main/java/org/hibernate/type/BasicArrayType.java @@ -28,7 +28,28 @@ public class BasicArrayType public BasicArrayType(BasicType baseDescriptor, JdbcType arrayJdbcType, JavaType arrayTypeDescriptor) { super( arrayJdbcType, arrayTypeDescriptor ); this.baseDescriptor = baseDescriptor; - this.name = baseDescriptor.getName() + "[]"; + this.name = determineArrayTypeName( baseDescriptor ); + } + + static String determineElementTypeName(BasicType baseDescriptor) { + final String elementName = baseDescriptor.getName(); + switch ( elementName ) { + case "boolean": + case "byte": + case "char": + case "short": + case "int": + case "long": + case "float": + case "double": + return Character.toUpperCase( elementName.charAt( 0 ) ) + elementName.substring( 1 ); + default: + return elementName; + } + } + + static String determineArrayTypeName(BasicType baseDescriptor) { + return determineElementTypeName( baseDescriptor ) + "[]"; } @Override diff --git a/hibernate-core/src/main/java/org/hibernate/type/BasicCollectionType.java b/hibernate-core/src/main/java/org/hibernate/type/BasicCollectionType.java index bd40f9e17ff2..f86771705457 100644 --- a/hibernate-core/src/main/java/org/hibernate/type/BasicCollectionType.java +++ b/hibernate-core/src/main/java/org/hibernate/type/BasicCollectionType.java @@ -14,6 +14,8 @@ import org.hibernate.type.descriptor.jdbc.JdbcType; import org.hibernate.type.descriptor.jdbc.JdbcTypeIndicators; +import static org.hibernate.type.BasicArrayType.determineElementTypeName; + /** * A type that maps between {@link java.sql.Types#ARRAY ARRAY} and {@code Collection} * @@ -36,18 +38,19 @@ public BasicCollectionType( } private static String determineName(BasicCollectionJavaType collectionTypeDescriptor, BasicType baseDescriptor) { + final String elementTypeName = determineElementTypeName( baseDescriptor ); switch ( collectionTypeDescriptor.getSemantics().getCollectionClassification() ) { case BAG: case ID_BAG: - return "Collection<" + baseDescriptor.getName() + ">"; + return "Collection<" + elementTypeName + ">"; case LIST: - return "List<" + baseDescriptor.getName() + ">"; + return "List<" + elementTypeName + ">"; case SET: - return "Set<" + baseDescriptor.getName() + ">"; + return "Set<" + elementTypeName + ">"; case SORTED_SET: - return "SortedSet<" + baseDescriptor.getName() + ">"; + return "SortedSet<" + elementTypeName + ">"; case ORDERED_SET: - return "OrderedSet<" + baseDescriptor.getName() + ">"; + return "OrderedSet<" + elementTypeName + ">"; } return null; } diff --git a/hibernate-core/src/main/java/org/hibernate/type/ConvertedBasicArrayType.java b/hibernate-core/src/main/java/org/hibernate/type/ConvertedBasicArrayType.java index d592694b3746..448504e01102 100644 --- a/hibernate-core/src/main/java/org/hibernate/type/ConvertedBasicArrayType.java +++ b/hibernate-core/src/main/java/org/hibernate/type/ConvertedBasicArrayType.java @@ -16,6 +16,8 @@ import org.hibernate.type.descriptor.jdbc.JdbcType; import org.hibernate.type.descriptor.jdbc.JdbcTypeIndicators; +import static org.hibernate.type.BasicArrayType.determineArrayTypeName; + /** * Given a {@link BasicValueConverter} for an array type, * @@ -50,7 +52,7 @@ public ConvertedBasicArrayType( this.jdbcValueExtractor = (ValueExtractor) arrayJdbcType.getExtractor( converter.getRelationalJavaType() ); this.jdbcLiteralFormatter = (JdbcLiteralFormatter) arrayJdbcType.getJdbcLiteralFormatter( converter.getRelationalJavaType() ); this.baseDescriptor = baseDescriptor; - this.name = baseDescriptor.getName() + "[]"; + this.name = determineArrayTypeName( baseDescriptor ); } @Override diff --git a/hibernate-core/src/test/java/org/hibernate/orm/test/mapping/basic/ByteArrayMappingTests.java b/hibernate-core/src/test/java/org/hibernate/orm/test/mapping/basic/ByteArrayMappingTests.java index e6f7aa3dbc6e..ccd85cba4158 100644 --- a/hibernate-core/src/test/java/org/hibernate/orm/test/mapping/basic/ByteArrayMappingTests.java +++ b/hibernate-core/src/test/java/org/hibernate/orm/test/mapping/basic/ByteArrayMappingTests.java @@ -65,7 +65,7 @@ public void verifyMappings(SessionFactoryScope scope) { } { - final BasicAttributeMapping primitive = (BasicAttributeMapping) entityDescriptor.findAttributeMapping("wrapper"); + final BasicAttributeMapping primitive = (BasicAttributeMapping) entityDescriptor.findAttributeMapping("boxed"); final JdbcMapping jdbcMapping = primitive.getJdbcMapping(); assertThat(jdbcMapping.getJavaTypeDescriptor().getJavaTypeClass(), equalTo(Byte[].class)); if ( dialect.supportsStandardArrays() ) { @@ -134,7 +134,7 @@ public static class EntityOfByteArrays { //tag::basic-bytearray-example[] // mapped as VARBINARY private byte[] primitive; - private Byte[] wrapper; + private Byte[] boxed; @JavaType( ByteArrayJavaType.class ) private Byte[] wrapperOld; @@ -151,7 +151,7 @@ public EntityOfByteArrays() { public EntityOfByteArrays(Integer id, byte[] primitive, Byte[] wrapper) { this.id = id; this.primitive = primitive; - this.wrapper = wrapper; + this.boxed = wrapper; this.primitiveLob = primitive; this.wrapperLob = wrapper; } @@ -159,7 +159,7 @@ public EntityOfByteArrays(Integer id, byte[] primitive, Byte[] wrapper) { public EntityOfByteArrays(Integer id, byte[] primitive, Byte[] wrapper, byte[] primitiveLob, Byte[] wrapperLob) { this.id = id; this.primitive = primitive; - this.wrapper = wrapper; + this.boxed = wrapper; this.primitiveLob = primitiveLob; this.wrapperLob = wrapperLob; }