Skip to content

Commit a1010b8

Browse files
committed
HHH-18582 Throw explicit error when trying to map nested arrays
1 parent 97f9477 commit a1010b8

File tree

1 file changed

+10
-1
lines changed

1 file changed

+10
-1
lines changed

hibernate-core/src/main/java/org/hibernate/type/BasicTypeRegistry.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
import org.hibernate.HibernateException;
1313
import org.hibernate.Internal;
14+
import org.hibernate.MappingException;
1415
import org.hibernate.internal.CoreLogging;
1516
import org.hibernate.internal.CoreMessageLogger;
1617
import org.hibernate.internal.util.StringHelper;
@@ -156,16 +157,24 @@ private <J> BasicType<J> resolvedType(JavaType<J> javaType, JdbcType jdbcType) {
156157
}
157158

158159
private <E> BasicType<?> resolvedType(ArrayJdbcType arrayType, BasicPluralJavaType<E> castPluralJavaType) {
160+
final BasicType<E> elementType = resolve( castPluralJavaType.getElementJavaType(), arrayType.getElementJdbcType() );
159161
final BasicType<?> resolvedType = castPluralJavaType.resolveType(
160162
typeConfiguration,
161163
typeConfiguration.getCurrentBaseSqlTypeIndicators().getDialect(),
162-
resolve( castPluralJavaType.getElementJavaType(), arrayType.getElementJdbcType() ),
164+
elementType,
163165
null,
164166
typeConfiguration.getCurrentBaseSqlTypeIndicators()
165167
);
166168
if ( resolvedType instanceof BasicPluralType<?,?> ) {
167169
register( resolvedType );
168170
}
171+
else if ( resolvedType == null ) {
172+
final Class<?> elementJavaTypeClass = elementType.getJavaTypeDescriptor().getJavaTypeClass();
173+
if ( elementJavaTypeClass != null && elementJavaTypeClass.isArray() && elementJavaTypeClass != byte[].class ) {
174+
// No support for nested arrays, except for byte[][]
175+
throw new MappingException( "Nested arrays (with the exception of byte[][]) are not supported" );
176+
}
177+
}
169178
return resolvedType;
170179
}
171180

0 commit comments

Comments
 (0)