Skip to content

Commit 2d6303d

Browse files
gildurbeikov
authored andcommitted
HHH-18551 Fix memory leak caused by creation of new BasicTypeImpl
1 parent e55bdbc commit 2d6303d

File tree

4 files changed

+8
-8
lines changed

4 files changed

+8
-8
lines changed

hibernate-core/src/main/java/org/hibernate/query/sqm/internal/SqmCriteriaNodeBuilder.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1334,7 +1334,7 @@ else if ( value == null ) {
13341334
final EnumJavaType javaType = new EnumJavaType<>( type );
13351335
final JdbcType jdbcType =
13361336
javaType.getRecommendedJdbcType( typeConfiguration.getCurrentBaseSqlTypeIndicators() );
1337-
return new BasicTypeImpl<>( javaType, jdbcType );
1337+
return typeConfiguration.getBasicTypeRegistry().resolve( javaType, jdbcType );
13381338
}
13391339
else {
13401340
return result;

hibernate-core/src/main/java/org/hibernate/sql/exec/internal/AbstractJdbcParameter.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
import org.hibernate.metamodel.mapping.MappingModelExpressible;
1919
import org.hibernate.metamodel.mapping.MappingType;
2020
import org.hibernate.metamodel.mapping.SqlExpressible;
21-
import org.hibernate.metamodel.model.domain.internal.BasicTypeImpl;
2221
import org.hibernate.query.BindableType;
2322
import org.hibernate.sql.ast.SqlAstWalker;
2423
import org.hibernate.sql.ast.tree.expression.JdbcParameter;
@@ -27,6 +26,7 @@
2726
import org.hibernate.sql.exec.spi.JdbcParameterBinder;
2827
import org.hibernate.sql.exec.spi.JdbcParameterBinding;
2928
import org.hibernate.sql.exec.spi.JdbcParameterBindings;
29+
import org.hibernate.type.BasicType;
3030
import org.hibernate.type.descriptor.java.EnumJavaType;
3131
import org.hibernate.type.descriptor.jdbc.JdbcType;
3232
import org.hibernate.type.descriptor.jdbc.JdbcTypeIndicators;
@@ -135,7 +135,7 @@ private JdbcMapping guessBindType(ExecutionContext executionContext, Object bind
135135
}
136136
}
137137

138-
private static <E extends Enum<E>> BasicTypeImpl<E> createEnumType(ExecutionContext executionContext, Class<E> enumClass) {
138+
private static <E extends Enum<E>> BasicType<E> createEnumType(ExecutionContext executionContext, Class<E> enumClass) {
139139
final EnumJavaType<E> enumJavaType = new EnumJavaType<>( enumClass );
140140
final JdbcTypeIndicators indicators =
141141
executionContext.getSession().getTypeConfiguration().getCurrentBaseSqlTypeIndicators();
@@ -144,7 +144,7 @@ private static <E extends Enum<E>> BasicTypeImpl<E> createEnumType(ExecutionCont
144144
// so just accept the default from the TypeConfiguration, which
145145
// is usually ORDINAL (the default according to JPA)
146146
enumJavaType.getRecommendedJdbcType(indicators);
147-
return new BasicTypeImpl<>( enumJavaType, jdbcType );
147+
return indicators.getTypeConfiguration().getBasicTypeRegistry().resolve( enumJavaType, jdbcType );
148148
}
149149

150150
@Override

hibernate-core/src/main/java/org/hibernate/type/descriptor/java/AbstractArrayJavaType.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
import org.hibernate.type.descriptor.java.spi.UnknownBasicJavaType;
2121
import org.hibernate.type.descriptor.jdbc.JdbcType;
2222
import org.hibernate.type.descriptor.jdbc.JdbcTypeIndicators;
23-
import org.hibernate.type.internal.BasicTypeImpl;
2423
import org.hibernate.type.spi.TypeConfiguration;
2524

2625
public abstract class AbstractArrayJavaType<T, E> extends AbstractClassJavaType<T>
@@ -49,7 +48,8 @@ public JdbcType getRecommendedJdbcType(JdbcTypeIndicators indicators) {
4948
// Always determine the recommended type to make sure this is a valid basic java type
5049
return indicators.getTypeConfiguration().getJdbcTypeRegistry().resolveTypeConstructorDescriptor(
5150
indicators.getPreferredSqlTypeCodeForArray(),
52-
new BasicTypeImpl<>( componentJavaType, componentJavaType.getRecommendedJdbcType( indicators ) ),
51+
indicators.getTypeConfiguration().getBasicTypeRegistry().resolve(
52+
componentJavaType, componentJavaType.getRecommendedJdbcType( indicators ) ),
5353
ColumnTypeInformation.EMPTY
5454
);
5555
}

hibernate-core/src/main/java/org/hibernate/type/descriptor/java/spi/BasicCollectionJavaType.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,6 @@
4040
import org.hibernate.type.descriptor.java.MutabilityPlan;
4141
import org.hibernate.type.descriptor.jdbc.JdbcType;
4242
import org.hibernate.type.descriptor.jdbc.JdbcTypeIndicators;
43-
import org.hibernate.type.internal.BasicTypeImpl;
4443
import org.hibernate.type.spi.TypeConfiguration;
4544

4645
/**
@@ -78,7 +77,8 @@ public JdbcType getRecommendedJdbcType(JdbcTypeIndicators indicators) {
7877
// (even though we only use this inside the if block, we want it to throw here if something wrong)
7978
return indicators.getTypeConfiguration().getJdbcTypeRegistry().resolveTypeConstructorDescriptor(
8079
indicators.getPreferredSqlTypeCodeForArray(),
81-
new BasicTypeImpl<>( componentJavaType, componentJavaType.getRecommendedJdbcType( indicators ) ),
80+
indicators.getTypeConfiguration().getBasicTypeRegistry().resolve(
81+
componentJavaType, componentJavaType.getRecommendedJdbcType( indicators ) ),
8282
ColumnTypeInformation.EMPTY
8383
);
8484
}

0 commit comments

Comments
 (0)