Skip to content

Commit b179881

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

File tree

4 files changed

+8
-9
lines changed

4 files changed

+8
-9
lines changed

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

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,6 @@
4444
import org.hibernate.metamodel.model.domain.DomainType;
4545
import org.hibernate.metamodel.model.domain.JpaMetamodel;
4646
import org.hibernate.metamodel.model.domain.SingularPersistentAttribute;
47-
import org.hibernate.metamodel.model.domain.internal.BasicTypeImpl;
4847
import org.hibernate.metamodel.spi.MappingMetamodelImplementor;
4948
import org.hibernate.query.BindableType;
5049
import org.hibernate.query.ImmutableEntityUpdateQueryHandlingMode;
@@ -1540,7 +1539,7 @@ else if ( value == null ) {
15401539
final EnumJavaType javaType = new EnumJavaType<>( type );
15411540
final JdbcType jdbcType =
15421541
javaType.getRecommendedJdbcType( typeConfiguration.getCurrentBaseSqlTypeIndicators() );
1543-
return new BasicTypeImpl<>( javaType, jdbcType );
1542+
return typeConfiguration.getBasicTypeRegistry().resolve( javaType, jdbcType );
15441543
}
15451544
else {
15461545
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
@@ -16,7 +16,6 @@
1616
import org.hibernate.metamodel.mapping.MappingModelExpressible;
1717
import org.hibernate.metamodel.mapping.MappingType;
1818
import org.hibernate.metamodel.mapping.SqlExpressible;
19-
import org.hibernate.metamodel.model.domain.internal.BasicTypeImpl;
2019
import org.hibernate.query.BindableType;
2120
import org.hibernate.sql.ast.SqlAstWalker;
2221
import org.hibernate.sql.ast.tree.expression.JdbcParameter;
@@ -25,6 +24,7 @@
2524
import org.hibernate.sql.exec.spi.JdbcParameterBinder;
2625
import org.hibernate.sql.exec.spi.JdbcParameterBinding;
2726
import org.hibernate.sql.exec.spi.JdbcParameterBindings;
27+
import org.hibernate.type.BasicType;
2828
import org.hibernate.type.descriptor.java.EnumJavaType;
2929
import org.hibernate.type.descriptor.jdbc.JdbcType;
3030
import org.hibernate.type.descriptor.jdbc.JdbcTypeIndicators;
@@ -133,7 +133,7 @@ private JdbcMapping guessBindType(ExecutionContext executionContext, Object bind
133133
}
134134
}
135135

136-
private static <E extends Enum<E>> BasicTypeImpl<E> createEnumType(ExecutionContext executionContext, Class<E> enumClass) {
136+
private static <E extends Enum<E>> BasicType<E> createEnumType(ExecutionContext executionContext, Class<E> enumClass) {
137137
final EnumJavaType<E> enumJavaType = new EnumJavaType<>( enumClass );
138138
final JdbcTypeIndicators indicators =
139139
executionContext.getSession().getTypeConfiguration().getCurrentBaseSqlTypeIndicators();
@@ -142,7 +142,7 @@ private static <E extends Enum<E>> BasicTypeImpl<E> createEnumType(ExecutionCont
142142
// so just accept the default from the TypeConfiguration, which
143143
// is usually ORDINAL (the default according to JPA)
144144
enumJavaType.getRecommendedJdbcType(indicators);
145-
return new BasicTypeImpl<>( enumJavaType, jdbcType );
145+
return indicators.getTypeConfiguration().getBasicTypeRegistry().resolve( enumJavaType, jdbcType );
146146
}
147147

148148
@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
@@ -18,7 +18,6 @@
1818
import org.hibernate.type.descriptor.java.spi.UnknownBasicJavaType;
1919
import org.hibernate.type.descriptor.jdbc.JdbcType;
2020
import org.hibernate.type.descriptor.jdbc.JdbcTypeIndicators;
21-
import org.hibernate.type.internal.BasicTypeImpl;
2221
import org.hibernate.type.spi.TypeConfiguration;
2322

2423
public abstract class AbstractArrayJavaType<T, E> extends AbstractClassJavaType<T>
@@ -47,7 +46,8 @@ public JdbcType getRecommendedJdbcType(JdbcTypeIndicators indicators) {
4746
// Always determine the recommended type to make sure this is a valid basic java type
4847
return indicators.getTypeConfiguration().getJdbcTypeRegistry().resolveTypeConstructorDescriptor(
4948
indicators.getPreferredSqlTypeCodeForArray(),
50-
new BasicTypeImpl<>( componentJavaType, componentJavaType.getRecommendedJdbcType( indicators ) ),
49+
indicators.getTypeConfiguration().getBasicTypeRegistry().resolve(
50+
componentJavaType, componentJavaType.getRecommendedJdbcType( indicators ) ),
5151
ColumnTypeInformation.EMPTY
5252
);
5353
}

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
@@ -38,7 +38,6 @@
3838
import org.hibernate.type.descriptor.java.MutabilityPlan;
3939
import org.hibernate.type.descriptor.jdbc.JdbcType;
4040
import org.hibernate.type.descriptor.jdbc.JdbcTypeIndicators;
41-
import org.hibernate.type.internal.BasicTypeImpl;
4241
import org.hibernate.type.spi.TypeConfiguration;
4342

4443
/**
@@ -76,7 +75,8 @@ public JdbcType getRecommendedJdbcType(JdbcTypeIndicators indicators) {
7675
// (even though we only use this inside the if block, we want it to throw here if something wrong)
7776
return indicators.getTypeConfiguration().getJdbcTypeRegistry().resolveTypeConstructorDescriptor(
7877
indicators.getPreferredSqlTypeCodeForArray(),
79-
new BasicTypeImpl<>( componentJavaType, componentJavaType.getRecommendedJdbcType( indicators ) ),
78+
indicators.getTypeConfiguration().getBasicTypeRegistry().resolve(
79+
componentJavaType, componentJavaType.getRecommendedJdbcType( indicators ) ),
8080
ColumnTypeInformation.EMPTY
8181
);
8282
}

0 commit comments

Comments
 (0)