Skip to content

Commit eea0b34

Browse files
committed
HHH-19364 show that we don't really use the Session until createQuery()
1 parent 7c79f1a commit eea0b34

File tree

2 files changed

+17
-14
lines changed

2 files changed

+17
-14
lines changed

hibernate-core/src/main/java/org/hibernate/query/programmatic/internal/MutationSpecificationImpl.java

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import jakarta.persistence.criteria.CriteriaDelete;
99
import jakarta.persistence.criteria.CriteriaUpdate;
1010
import jakarta.persistence.criteria.Root;
11+
import org.hibernate.engine.spi.SessionFactoryImplementor;
1112
import org.hibernate.engine.spi.SharedSessionContractImplementor;
1213
import org.hibernate.query.programmatic.MutationSpecification;
1314
import org.hibernate.query.IllegalMutationQueryException;
@@ -44,7 +45,7 @@ public MutationSpecificationImpl(
4445
Class<T> mutationTarget,
4546
SharedSessionContractImplementor session) {
4647
this.session = session;
47-
this.sqmStatement = resolveSqmTree( hql, session );
48+
this.sqmStatement = resolveSqmTree( hql, session.getFactory() );
4849
this.mutationTargetRoot = resolveSqmRoot( this.sqmStatement, mutationTarget );
4950
}
5051

@@ -53,15 +54,17 @@ public MutationSpecificationImpl(
5354
SharedSessionContractImplementor session) {
5455
this.session = session;
5556
this.sqmStatement = (SqmUpdateStatement<T>) criteriaQuery;
56-
this.mutationTargetRoot = resolveSqmRoot( sqmStatement, sqmStatement.getTarget().getManagedType().getJavaType() );
57+
this.mutationTargetRoot = resolveSqmRoot( sqmStatement,
58+
sqmStatement.getTarget().getManagedType().getJavaType() );
5759
}
5860

5961
public MutationSpecificationImpl(
6062
CriteriaDelete<T> criteriaQuery,
6163
SharedSessionContractImplementor session) {
6264
this.session = session;
6365
this.sqmStatement = (SqmDeleteStatement<T>) criteriaQuery;
64-
this.mutationTargetRoot = resolveSqmRoot( sqmStatement, sqmStatement.getTarget().getManagedType().getJavaType() );
66+
this.mutationTargetRoot = resolveSqmRoot( sqmStatement,
67+
sqmStatement.getTarget().getManagedType().getJavaType() );
6568
}
6669

6770
@Override
@@ -96,8 +99,8 @@ public MutationQuery createQuery() {
9699
*/
97100
private static <T> SqmDeleteOrUpdateStatement<T> resolveSqmTree(
98101
String hql,
99-
SharedSessionContractImplementor session) {
100-
final QueryEngine queryEngine = session.getFactory().getQueryEngine();
102+
SessionFactoryImplementor sessionFactory) {
103+
final QueryEngine queryEngine = sessionFactory.getQueryEngine();
101104
final HqlInterpretation<T> hqlInterpretation = queryEngine
102105
.getInterpretationCache()
103106
.resolveHqlInterpretation( hql, null, queryEngine.getHqlTranslator() );

hibernate-core/src/main/java/org/hibernate/query/programmatic/internal/SelectionSpecificationImpl.java

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import jakarta.persistence.criteria.CriteriaQuery;
88
import jakarta.persistence.criteria.Root;
99
import org.hibernate.QueryException;
10+
import org.hibernate.engine.spi.SessionFactoryImplementor;
1011
import org.hibernate.engine.spi.SharedSessionContractImplementor;
1112
import org.hibernate.metamodel.model.domain.EntityDomainType;
1213
import org.hibernate.query.IllegalSelectQueryException;
@@ -50,14 +51,14 @@ public SelectionSpecificationImpl(
5051
SharedSessionContractImplementor session) {
5152
this.resultType = resultType;
5253
this.session = session;
53-
this.sqmStatement = resolveSqmTree( hql, resultType, session );
54+
this.sqmStatement = resolveSqmTree( hql, resultType, session.getFactory() );
5455
this.sqmRoot = extractRoot( sqmStatement, resultType, hql );
5556
}
5657

5758
public SelectionSpecificationImpl(
5859
Class<T> rootEntityType,
5960
SharedSessionContractImplementor session) {
60-
this( "from " + determineEntityName( rootEntityType, session ), rootEntityType, session );
61+
this( "from " + determineEntityName( rootEntityType, session.getFactory() ), rootEntityType, session );
6162
}
6263

6364
public SelectionSpecificationImpl(
@@ -124,8 +125,8 @@ public SelectionQuery<T> createQuery() {
124125
private static <T> SqmSelectStatement<T> resolveSqmTree(
125126
String hql,
126127
Class<T> resultType,
127-
SharedSessionContractImplementor session) {
128-
final QueryEngine queryEngine = session.getFactory().getQueryEngine();
128+
SessionFactoryImplementor sessionFactory) {
129+
final QueryEngine queryEngine = sessionFactory.getQueryEngine();
129130
final HqlInterpretation<T> hqlInterpretation = queryEngine
130131
.getInterpretationCache()
131132
.resolveHqlInterpretation( hql, resultType, queryEngine.getHqlTranslator() );
@@ -174,11 +175,10 @@ private SqmRoot<T> extractRoot(SqmSelectStatement<T> sqmStatement, Class<T> resu
174175

175176
private static String determineEntityName(
176177
Class<?> rootEntityType,
177-
SharedSessionContractImplementor session) {
178-
final EntityDomainType<?> entityType = session
179-
.getFactory()
180-
.getJpaMetamodel()
181-
.findEntityType( rootEntityType );
178+
SessionFactoryImplementor sessionFactory) {
179+
final EntityDomainType<?> entityType =
180+
sessionFactory.getJpaMetamodel()
181+
.findEntityType( rootEntityType );
182182
if ( entityType == null ) {
183183
return rootEntityType.getName();
184184
}

0 commit comments

Comments
 (0)