diff --git a/documentation/src/main/asciidoc/userguide/chapters/query/programmatic/QuerySpecification.adoc b/documentation/src/main/asciidoc/userguide/chapters/query/programmatic/QuerySpecification.adoc index ddde27a385ae..b2d2ce1dfc9f 100644 --- a/documentation/src/main/asciidoc/userguide/chapters/query/programmatic/QuerySpecification.adoc +++ b/documentation/src/main/asciidoc/userguide/chapters/query/programmatic/QuerySpecification.adoc @@ -20,9 +20,9 @@ A `SelectionSpecification` allows to iteratively build a query from a "base", ad ==== [source, java, indent=0] ---- -SelectionSpecification spec = session.createSelectionSpecification( - "from Book", - Book.class +SelectionSpecification spec = SelectionSpecification.create( + Book.class, + "from Book" ); ---- ==== @@ -33,7 +33,7 @@ or a root entity as the base - ==== [source, java, indent=0] ---- -SelectionSpecification spec = session.createSelectionSpecification(Book.class); +SelectionSpecification spec = SelectionSpecification.create(Book.class); ---- ==== @@ -45,7 +45,7 @@ Once we have the `SelectionSpecification` we can adjust the query adding restric ---- // from here we can augment the base query "from Book", // with either restrictions -spec.restriction( +spec.restrict( Restriction.restrict( Book_.suggestedCost, Range.closed(10.00, 19.99) @@ -53,7 +53,7 @@ spec.restriction( ); // or here with some sorting -spec.order( +spec.sort( Order.asc(Book_.suggestedCost) ) ---- @@ -70,7 +70,7 @@ After adjusting the query, we can obtain the executable `SelectionQuery`: ==== [source, java, indent=0] ---- -SelectionQuery qry = ds.createQuery(); +SelectionQuery qry = ds.createQuery(session); List books = qry.getResultList(); ---- ==== @@ -81,17 +81,17 @@ These calls can even be chained, e.g. ==== [source, java, indent=0] ---- -SelectionQuery qry = session.createSelectionSpecification( - "from Book", - Book.class -).restriction( +SelectionQuery qry = SelectionSpecification.create( + Book.class, + "from Book" +).restrict( Restriction.restrict( Book_.suggestedCost, Range.closed(10.00, 19.99) ) -).order( +).sort( Order.asc(Book_.suggestedCost) -).createQuery(); +).createQuery(session); ---- ==== @@ -112,14 +112,14 @@ At the moment, only update and delete queries are supported. E.g. ==== [source, java, indent=0] ---- -MutationQuery qry = session.createMutationSpecification( - "delete Book", - Book.class -).restriction( +MutationQuery qry = MutationSpecification.create( + Book.class, + "delete Book" +).restrict( Restriction.restrict( Book_.suggestedCost, Range.closed(10.00, 19.99) ) -).createQuery(); +).createQuery(session); ---- ==== diff --git a/hibernate-core/src/main/java/org/hibernate/query/Order.java b/hibernate-core/src/main/java/org/hibernate/query/Order.java index d1783f534bf3..7e343bfcffdf 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/Order.java +++ b/hibernate-core/src/main/java/org/hibernate/query/Order.java @@ -18,22 +18,25 @@ /** * A rule for sorting a query result set. *

- * This is a convenience class which allows query result ordering - * rules to be passed around the system before being applied to - * a {@link Query} by calling {@link SelectionQuery#setOrder(Order)}. + * This is a convenience class which allows query result ordering rules to be + * passed around the system before being applied to a {@link Query} by calling + * {@link org.hibernate.query.programmatic.SelectionSpecification#sort(Order)}. *

- * session.createSelectionQuery("from Book b join b.authors a where a.name = :name", Book.class)
+ * SelectionSpecification.create(Book.class,
+ *             "from Book b join b.authors a where a.name = :name")
+ *         .sort(asc(Book_.publicationDate))
+ *         .createQuery(session)
  *         .setParameter("name", authorName)
- *         .setOrder(asc(Book_.publicationDate))
  *         .getResultList();
  * 
*

* {@code Order}s may be stacked using {@link List#of} and - * {@link SelectionQuery#setOrder(List)}. + * {@link org.hibernate.query.programmatic.SelectionSpecification#resort(List)}. *

- * session.createSelectionQuery("from Book b join b.authors a where a.name = :name", Book.class)
+ * SelectionSpecification.create(Book.class,
+ *             "from Book b join b.authors a where a.name = :name")
+ *         .sort(List.of(asc(Book_.publicationDate), desc(Book_.ssn)))
  *         .setParameter("name", authorName)
- *         .setOrder(List.of(asc(Book_.publicationDate), desc(Book_.ssn)))
  *         .getResultList();
  * 
*

@@ -49,8 +52,8 @@ * used by Hibernate Data Repositories to implement Jakarta Data * query methods. * - * @see SelectionQuery#setOrder(Order) - * @see SelectionQuery#setOrder(java.util.List) + * @see org.hibernate.query.programmatic.SelectionSpecification#sort(Order) + * @see org.hibernate.query.programmatic.SelectionSpecification#resort(List) * @see org.hibernate.query.restriction.Restriction * * @author Gavin King diff --git a/hibernate-core/src/main/java/org/hibernate/query/programmatic/MutationSpecification.java b/hibernate-core/src/main/java/org/hibernate/query/programmatic/MutationSpecification.java index f2bfb848fa58..4edfc9506883 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/programmatic/MutationSpecification.java +++ b/hibernate-core/src/main/java/org/hibernate/query/programmatic/MutationSpecification.java @@ -14,7 +14,6 @@ import org.hibernate.StatelessSession; import org.hibernate.query.IllegalMutationQueryException; import org.hibernate.query.MutationQuery; -import org.hibernate.query.SelectionQuery; import org.hibernate.query.programmatic.internal.MutationSpecificationImpl; import org.hibernate.query.restriction.Restriction; @@ -28,7 +27,7 @@ * kinds. *

* Once all {@linkplain #restrict restrictions} are specified, call - * {@link #createQuery createQuery()} to obtain an {@linkplain SelectionQuery + * {@link #createQuery createQuery()} to obtain an {@linkplain MutationQuery * executable mutation query object}. * * @param The entity type which is the target of the mutation. diff --git a/whats-new.adoc b/whats-new.adoc index 65702ef4d153..2d04fde0afaa 100644 --- a/whats-new.adoc +++ b/whats-new.adoc @@ -129,17 +129,17 @@ A new API has been added for incremental definition of a query, with support for ==== [source, java, indent=0] ---- -SelectionQuery qry = session.createSelectionSpecification( - "from Book", - Book.class -).restriction( +SelectionQuery qry = SelectionSpecification.create( + Book.class, + "from Book" +).restrict( Restriction.restrict( Book_.suggestedCost, Range.closed(10.00, 19.99) ) -).order( +).sort( Order.asc(Book_.suggestedCost) -).createQuery(); +).createQuery(session); ---- ==== @@ -148,15 +148,15 @@ as well as mutations - ==== [source, java, indent=0] ---- -MutationQuery qry = session.createMutationSpecification( - "delete Book", - Book.class -).restriction( +MutationQuery qry = MutationSpecification.create( + Book.class, + "delete Book" +).restrict( Restriction.restrict( Book_.suggestedCost, Range.closed(10.00, 19.99) ) -).createQuery(); +).createQuery(session); ---- ====