|
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