| 
11 | 11 | 
 
  | 
12 | 12 | import org.hibernate.HibernateException;  | 
13 | 13 | import org.hibernate.Internal;  | 
 | 14 | +import org.hibernate.MappingException;  | 
14 | 15 | import org.hibernate.internal.CoreLogging;  | 
15 | 16 | import org.hibernate.internal.CoreMessageLogger;  | 
16 | 17 | import org.hibernate.internal.util.StringHelper;  | 
@@ -156,16 +157,24 @@ private <J> BasicType<J> resolvedType(JavaType<J> javaType, JdbcType jdbcType) {  | 
156 | 157 | 	}  | 
157 | 158 | 
 
  | 
158 | 159 | 	private <E> BasicType<?> resolvedType(ArrayJdbcType arrayType, BasicPluralJavaType<E> castPluralJavaType) {  | 
 | 160 | +		final BasicType<E> elementType = resolve( castPluralJavaType.getElementJavaType(), arrayType.getElementJdbcType() );  | 
159 | 161 | 		final BasicType<?> resolvedType = castPluralJavaType.resolveType(  | 
160 | 162 | 				typeConfiguration,  | 
161 | 163 | 				typeConfiguration.getCurrentBaseSqlTypeIndicators().getDialect(),  | 
162 |  | -				resolve( castPluralJavaType.getElementJavaType(), arrayType.getElementJdbcType() ),  | 
 | 164 | +				elementType,  | 
163 | 165 | 				null,  | 
164 | 166 | 				typeConfiguration.getCurrentBaseSqlTypeIndicators()  | 
165 | 167 | 		);  | 
166 | 168 | 		if ( resolvedType instanceof BasicPluralType<?,?> ) {  | 
167 | 169 | 			register( resolvedType );  | 
168 | 170 | 		}  | 
 | 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 | +		}  | 
169 | 178 | 		return resolvedType;  | 
170 | 179 | 	}  | 
171 | 180 | 
 
  | 
 | 
0 commit comments