From b0088ee4c5236dcb9a5324e0244fd5ea1f5ff7fb Mon Sep 17 00:00:00 2001 From: Gavin King Date: Fri, 9 May 2025 07:49:44 +0200 Subject: [PATCH] expand the jdoc of QueryProducer --- .../org/hibernate/query/QueryProducer.java | 60 +++++++++++++++++-- 1 file changed, 56 insertions(+), 4 deletions(-) diff --git a/hibernate-core/src/main/java/org/hibernate/query/QueryProducer.java b/hibernate-core/src/main/java/org/hibernate/query/QueryProducer.java index 2bcafcc83965..1c211239818b 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/QueryProducer.java +++ b/hibernate-core/src/main/java/org/hibernate/query/QueryProducer.java @@ -12,15 +12,67 @@ import org.hibernate.query.criteria.JpaCriteriaInsert; /** - * Contract for things that can produce instances of {@link Query} and {@link NativeQuery}. + * An object which can produce instances of {@link SelectionQuery} and {@link MutationQuery}. * Implementors include {@link org.hibernate.Session} and {@link org.hibernate.StatelessSession}. * Many operations of the interface have the same or very similar signatures to operations of * {@link jakarta.persistence.EntityManager}. They are declared here to allow reuse by * {@code StatelessSession}. *

- * Operations like {@link #createQuery(String, Class)}, {@link #createNamedQuery(String, Class)}, - * and {@link #createNativeQuery(String, Class)} accept an instance indicating the return type - * of the query. + * There are three fundamental ways to express a query: + *

+ *

+ * In each case, the object used to execute the query depends on whether the query is a + * selection query or a mutation query. + *

+ * This interface declares operations for creating instances of these objects. + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + *
SelectionMutation
HQL{@link #createSelectionQuery(String,Class)} and + * {@link #createSelectionQuery(String,EntityGraph)}{@link #createMutationQuery(String)}
SQL{@link #createNativeQuery(String,Class)} and + * {@link #createNativeQuery(String,String,Class)}{@link #createNativeMutationQuery(String)}
Criteria{@link #createSelectionQuery(CriteriaQuery)}{@link #createMutationQuery(CriteriaUpdate)}, + * {@link #createMutationQuery(CriteriaDelete)}, and + * {@link #createMutationQuery(JpaCriteriaInsert)}
Named queries{@link #createNamedSelectionQuery(String,Class)}{@link #createNamedMutationQuery(String)}
+ *

+ * Operations like {@link #createSelectionQuery(String, Class) createSelectionQuery()}, + * {@link #createNamedSelectionQuery(String, Class) createNamedSelectionQuery()}, and + * {@link #createNativeQuery(String, Class) createNativeQuery()} accept a Java + * {@linkplain Class class object} indicating the result type of the query. *