Skip to content

Commit 3097c47

Browse files
committed
HHH-16659 add Query.setEntityGraph()
and turn a log message into an IllegalArgumentException
1 parent e102dea commit 3097c47

File tree

3 files changed

+20
-1
lines changed

3 files changed

+20
-1
lines changed

hibernate-core/src/main/java/org/hibernate/query/SelectionQuery.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
import jakarta.persistence.CacheRetrieveMode;
1919
import jakarta.persistence.CacheStoreMode;
20+
import jakarta.persistence.EntityGraph;
2021
import org.hibernate.CacheMode;
2122
import org.hibernate.FlushMode;
2223
import org.hibernate.Incubating;
@@ -34,6 +35,7 @@
3435
import jakarta.persistence.LockModeType;
3536
import jakarta.persistence.Parameter;
3637
import jakarta.persistence.TemporalType;
38+
import org.hibernate.graph.GraphSemantic;
3739

3840
/**
3941
* Within the context of an active {@linkplain org.hibernate.Session session},
@@ -186,6 +188,14 @@ default Stream<R> stream() {
186188

187189
SelectionQuery<R> setHint(String hintName, Object value);
188190

191+
/**
192+
* Apply an {@link EntityGraph} to the query.
193+
* <p>
194+
* This is an alternative way to specify the associations which
195+
* should be fetched as part of the initial query.
196+
*/
197+
SelectionQuery<R> setEntityGraph(EntityGraph<R> graph, GraphSemantic semantic);
198+
189199
@Override
190200
SelectionQuery<R> setFlushMode(FlushModeType flushMode);
191201

hibernate-core/src/main/java/org/hibernate/query/spi/AbstractCommonQueryContract.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -368,7 +368,8 @@ else if ( value instanceof String ) {
368368
applyGraph( (String) value, graphSemantic );
369369
}
370370
else {
371-
QueryLogging.QUERY_LOGGER.debugf( "The %s hint was set, but the value was neither an EntityGraph nor String", hintName );
371+
throw new IllegalArgumentException( "The value of the hint '" + hintName
372+
+ "' must be an instance of EntityGraph or the string name of a named EntityGraph" );
372373
}
373374
}
374375

hibernate-core/src/main/java/org/hibernate/query/spi/AbstractSelectionQuery.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222

2323
import jakarta.persistence.CacheRetrieveMode;
2424
import jakarta.persistence.CacheStoreMode;
25+
import jakarta.persistence.EntityGraph;
2526
import jakarta.persistence.FlushModeType;
2627
import jakarta.persistence.LockModeType;
2728
import jakarta.persistence.NoResultException;
@@ -41,7 +42,9 @@
4142
import org.hibernate.TypeMismatchException;
4243
import org.hibernate.engine.spi.SessionFactoryImplementor;
4344
import org.hibernate.engine.spi.SharedSessionContractImplementor;
45+
import org.hibernate.graph.GraphSemantic;
4446
import org.hibernate.graph.spi.AppliedGraph;
47+
import org.hibernate.graph.spi.RootGraphImplementor;
4548
import org.hibernate.jpa.internal.util.LockModeTypeHelper;
4649
import org.hibernate.metamodel.model.domain.BasicDomainType;
4750
import org.hibernate.metamodel.model.domain.DomainType;
@@ -576,6 +579,11 @@ public SelectionQuery<R> setHint(String hintName, Object value) {
576579
return this;
577580
}
578581

582+
@Override
583+
public SelectionQuery<R> setEntityGraph(EntityGraph<R> graph, GraphSemantic semantic) {
584+
applyGraph( (RootGraphImplementor<R>) graph, semantic );
585+
return this;
586+
}
579587

580588
@Override
581589
public LockOptions getLockOptions() {

0 commit comments

Comments
 (0)