|
16 | 16 | import org.hibernate.internal.CoreMessageLogger; |
17 | 17 | import org.hibernate.internal.util.StringHelper; |
18 | 18 | import org.hibernate.internal.util.collections.CollectionHelper; |
| 19 | +import org.hibernate.tool.schema.extract.spi.ColumnTypeInformation; |
19 | 20 | import org.hibernate.type.descriptor.converter.spi.BasicValueConverter; |
20 | 21 | import org.hibernate.type.descriptor.java.BasicPluralJavaType; |
21 | 22 | import org.hibernate.type.descriptor.java.ImmutableMutabilityPlan; |
22 | 23 | import org.hibernate.type.descriptor.java.JavaType; |
23 | 24 | import org.hibernate.type.descriptor.jdbc.ArrayJdbcType; |
| 25 | +import org.hibernate.type.descriptor.jdbc.DelegatingJdbcTypeIndicators; |
24 | 26 | import org.hibernate.type.descriptor.jdbc.JdbcType; |
25 | 27 | import org.hibernate.type.internal.BasicTypeImpl; |
26 | 28 | import org.hibernate.type.internal.ConvertedBasicTypeImpl; |
@@ -162,12 +164,53 @@ private <J> BasicType<J> resolvedType(JavaType<J> javaType, JdbcType jdbcType) { |
162 | 164 |
|
163 | 165 | private <E> BasicType<?> resolvedType(ArrayJdbcType arrayType, BasicPluralJavaType<E> castPluralJavaType) { |
164 | 166 | final BasicType<E> elementType = resolve( castPluralJavaType.getElementJavaType(), arrayType.getElementJdbcType() ); |
| 167 | + final var indicators = typeConfiguration.getCurrentBaseSqlTypeIndicators(); |
165 | 168 | final BasicType<?> resolvedType = castPluralJavaType.resolveType( |
166 | 169 | typeConfiguration, |
167 | | - typeConfiguration.getCurrentBaseSqlTypeIndicators().getDialect(), |
| 170 | + indicators.getDialect(), |
168 | 171 | elementType, |
169 | | - null, |
170 | | - typeConfiguration.getCurrentBaseSqlTypeIndicators() |
| 172 | + new ColumnTypeInformation() { |
| 173 | + @Override |
| 174 | + public Boolean getNullable() { |
| 175 | + return null; |
| 176 | + } |
| 177 | + |
| 178 | + @Override |
| 179 | + public int getTypeCode() { |
| 180 | + return arrayType.getDefaultSqlTypeCode(); |
| 181 | + } |
| 182 | + |
| 183 | + @Override |
| 184 | + public String getTypeName() { |
| 185 | + return null; |
| 186 | + } |
| 187 | + |
| 188 | + @Override |
| 189 | + public int getColumnSize() { |
| 190 | + return 0; |
| 191 | + } |
| 192 | + |
| 193 | + @Override |
| 194 | + public int getDecimalDigits() { |
| 195 | + return 0; |
| 196 | + } |
| 197 | + }, |
| 198 | + new DelegatingJdbcTypeIndicators( indicators ) { |
| 199 | + @Override |
| 200 | + public Integer getExplicitJdbcTypeCode() { |
| 201 | + return arrayType.getDefaultSqlTypeCode(); |
| 202 | + } |
| 203 | + |
| 204 | + @Override |
| 205 | + public int getPreferredSqlTypeCodeForArray() { |
| 206 | + return arrayType.getDefaultSqlTypeCode(); |
| 207 | + } |
| 208 | + |
| 209 | + @Override |
| 210 | + public int getPreferredSqlTypeCodeForArray(int elementSqlTypeCode) { |
| 211 | + return arrayType.getDefaultSqlTypeCode(); |
| 212 | + } |
| 213 | + } |
171 | 214 | ); |
172 | 215 | if ( resolvedType instanceof BasicPluralType<?,?> ) { |
173 | 216 | register( resolvedType ); |
|
0 commit comments