|
13 | 13 |
|
14 | 14 | import org.hibernate.HibernateException; |
15 | 15 | import org.hibernate.Internal; |
| 16 | +import org.hibernate.MappingException; |
16 | 17 | import org.hibernate.internal.CoreLogging; |
17 | 18 | import org.hibernate.internal.CoreMessageLogger; |
18 | 19 | import org.hibernate.internal.util.StringHelper; |
@@ -157,16 +158,24 @@ private <J> BasicType<J> resolvedType(JavaType<J> javaType, JdbcType jdbcType) { |
157 | 158 | } |
158 | 159 |
|
159 | 160 | private <E> BasicType<?> resolvedType(ArrayJdbcType arrayType, BasicPluralJavaType<E> castPluralJavaType) { |
| 161 | + final BasicType<E> elementType = resolve( castPluralJavaType.getElementJavaType(), arrayType.getElementJdbcType() ); |
160 | 162 | final BasicType<?> resolvedType = castPluralJavaType.resolveType( |
161 | 163 | typeConfiguration, |
162 | 164 | typeConfiguration.getCurrentBaseSqlTypeIndicators().getDialect(), |
163 | | - resolve( castPluralJavaType.getElementJavaType(), arrayType.getElementJdbcType() ), |
| 165 | + elementType, |
164 | 166 | null, |
165 | 167 | typeConfiguration.getCurrentBaseSqlTypeIndicators() |
166 | 168 | ); |
167 | 169 | if ( resolvedType instanceof BasicPluralType<?,?> ) { |
168 | 170 | register( resolvedType ); |
169 | 171 | } |
| 172 | + else if ( resolvedType == null ) { |
| 173 | + final Class<?> elementJavaTypeClass = elementType.getJavaTypeDescriptor().getJavaTypeClass(); |
| 174 | + if ( elementJavaTypeClass != null && elementJavaTypeClass.isArray() && elementJavaTypeClass != byte[].class ) { |
| 175 | + // No support for nested arrays, except for byte[][] |
| 176 | + throw new MappingException( "Nested arrays (with the exception of byte[][]) are not supported" ); |
| 177 | + } |
| 178 | + } |
170 | 179 | return resolvedType; |
171 | 180 | } |
172 | 181 |
|
|
0 commit comments