Skip to content

Commit 93ef64e

Browse files
blafondDavideD
authored andcommitted
[hibernate#1735] order support
1 parent 48e3485 commit 93ef64e

11 files changed

+160
-2
lines changed

hibernate-reactive-core/src/main/java/org/hibernate/reactive/mutiny/Mutiny.java

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import org.hibernate.engine.spi.SharedSessionContractImplementor;
2525
import org.hibernate.jpa.internal.util.FlushModeTypeHelper;
2626
import org.hibernate.proxy.HibernateProxy;
27+
import org.hibernate.query.Order;
2728
import org.hibernate.query.Page;
2829
import org.hibernate.reactive.common.AffectedEntities;
2930
import org.hibernate.reactive.common.Identifier;
@@ -353,6 +354,30 @@ default SelectionQuery<R> setLockMode(String alias, LockModeType lockModeType) {
353354
// */
354355
// Query<R> setLockOptions(LockOptions lockOptions);
355356

357+
/**
358+
* If the result type of this query is an entity class, add one or more
359+
* {@linkplain Order rules} for ordering the query results.
360+
*
361+
* @param orderList one or more instances of {@link Order}
362+
*
363+
* @see Order
364+
*
365+
* @see org.hibernate.query.Query#setOrder(List)
366+
*/
367+
SelectionQuery<R> setOrder(List<Order<? super R>> orderList);
368+
369+
/**
370+
* If the result type of this query is an entity class, add a
371+
* {@linkplain Order rule} for ordering the query results.
372+
*
373+
* @param order an instance of {@link Order}
374+
*
375+
* @see Order
376+
*
377+
* @see org.hibernate.query.Query#setOrder(Order)
378+
*/
379+
SelectionQuery<R> setOrder(Order<? super R> order);
380+
356381
/**
357382
* Set the {@link EntityGraph} that will be used as a fetch plan for
358383
* the root entity returned by this query.

hibernate-reactive-core/src/main/java/org/hibernate/reactive/mutiny/impl/MutinyQueryImpl.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import org.hibernate.LockMode;
1515
import org.hibernate.graph.GraphSemantic;
1616
import org.hibernate.graph.spi.RootGraphImplementor;
17+
import org.hibernate.query.Order;
1718
import org.hibernate.query.Page;
1819
import org.hibernate.reactive.mutiny.Mutiny;
1920
import org.hibernate.reactive.mutiny.Mutiny.Query;
@@ -68,6 +69,18 @@ public Query<R> setLockMode(LockMode lockMode) {
6869
return this;
6970
}
7071

72+
@Override
73+
public Mutiny.SelectionQuery<R> setOrder(List<Order<? super R>> orders) {
74+
delegate.setOrder( orders );
75+
return this;
76+
}
77+
78+
@Override
79+
public Mutiny.SelectionQuery<R> setOrder(Order<? super R> order) {
80+
delegate.setOrder( (List<Order<? super R>>) order );
81+
return this;
82+
}
83+
7184
@Override
7285
public Query<R> setPlan(EntityGraph<R> entityGraph) {
7386
delegate.applyGraph( (RootGraphImplementor<?>) entityGraph, GraphSemantic.FETCH );

hibernate-reactive-core/src/main/java/org/hibernate/reactive/mutiny/impl/MutinySelectionQueryImpl.java

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@
1414
import org.hibernate.LockMode;
1515
import org.hibernate.graph.GraphSemantic;
1616
import org.hibernate.graph.spi.RootGraphImplementor;
17+
import org.hibernate.query.Order;
1718
import org.hibernate.query.Page;
18-
import org.hibernate.reactive.mutiny.Mutiny;
1919
import org.hibernate.reactive.mutiny.Mutiny.SelectionQuery;
2020
import org.hibernate.reactive.query.ReactiveSelectionQuery;
2121

@@ -118,7 +118,7 @@ public SelectionQuery<R> setFirstResult(int startPosition) {
118118
}
119119

120120
@Override
121-
public Mutiny.SelectionQuery<R> setPage(Page page) {
121+
public SelectionQuery<R> setPage(Page page) {
122122
setMaxResults( page.getMaxResults() );
123123
setFirstResult( page.getFirstResult() );
124124
return this;
@@ -191,6 +191,19 @@ public SelectionQuery<R> setLockMode(String alias, LockMode lockMode) {
191191
return this;
192192
}
193193

194+
@Override
195+
public SelectionQuery<R> setOrder(List<Order<? super R>> orders) {
196+
delegate.setOrder( orders );
197+
return this;
198+
}
199+
200+
@Override
201+
public SelectionQuery<R> setOrder(Order<? super R> order) {
202+
delegate.setOrder( order );
203+
return this;
204+
}
205+
206+
194207
@Override
195208
public SelectionQuery<R> setParameter(String name, Object value) {
196209
delegate.setParameter( name, value );

hibernate-reactive-core/src/main/java/org/hibernate/reactive/query/ReactiveSelectionQuery.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import org.hibernate.graph.spi.RootGraphImplementor;
2323
import org.hibernate.query.BindableType;
2424
import org.hibernate.query.CommonQueryContract;
25+
import org.hibernate.query.Order;
2526
import org.hibernate.query.QueryParameter;
2627

2728
import jakarta.persistence.CacheRetrieveMode;
@@ -123,6 +124,10 @@ default CompletionStage<List<R>> getReactiveResultList() {
123124

124125
void applyGraph(RootGraphImplementor<?> graph, GraphSemantic semantic);
125126

127+
ReactiveSelectionQuery<R> setOrder(List<Order<? super R>> orderList);
128+
129+
ReactiveSelectionQuery<R> setOrder(Order<? super R> order);
130+
126131
ReactiveSelectionQuery<R> enableFetchProfile(String profileName);
127132

128133
@Override

hibernate-reactive-core/src/main/java/org/hibernate/reactive/query/sql/internal/ReactiveNativeQueryImpl.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import org.hibernate.internal.AbstractSharedSessionContract;
3030
import org.hibernate.metamodel.model.domain.BasicDomainType;
3131
import org.hibernate.query.BindableType;
32+
import org.hibernate.query.Order;
3233
import org.hibernate.query.QueryParameter;
3334
import org.hibernate.query.ResultListTransformer;
3435
import org.hibernate.query.TupleTransformer;
@@ -473,6 +474,18 @@ public ReactiveNativeQueryImpl<R> setLockMode(String alias, LockMode lockMode) {
473474
return this;
474475
}
475476

477+
@Override
478+
public ReactiveNativeQueryImpl<R> setOrder(List<Order<? super R>> orders) {
479+
super.setOrder( orders );
480+
return this;
481+
}
482+
483+
@Override
484+
public ReactiveNativeQueryImpl<R> setOrder(Order<? super R> order) {
485+
super.setOrder( order );
486+
return this;
487+
}
488+
476489
@Override
477490
public ReactiveNativeQueryImpl<R> setComment(String comment) {
478491
super.setComment( comment );

hibernate-reactive-core/src/main/java/org/hibernate/reactive/query/sqm/ReactiveSqmSelectionQuery.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,13 @@
99
import java.util.Calendar;
1010
import java.util.Collection;
1111
import java.util.Date;
12+
import java.util.List;
1213
import java.util.Map;
1314

1415
import org.hibernate.CacheMode;
1516
import org.hibernate.FlushMode;
1617
import org.hibernate.query.BindableType;
18+
import org.hibernate.query.Order;
1719
import org.hibernate.query.QueryParameter;
1820
import org.hibernate.query.spi.SqmQuery;
1921
import org.hibernate.reactive.query.ReactiveSelectionQuery;
@@ -167,6 +169,12 @@ <P> ReactiveSqmSelectionQuery<R> setParameterList(
167169
@Override
168170
ReactiveSqmSelectionQuery<R> setTimeout(int timeout);
169171

172+
@Override
173+
ReactiveSqmSelectionQuery<R> setOrder(List<Order<? super R>> orders);
174+
175+
@Override
176+
ReactiveSqmSelectionQuery<R> setOrder(Order<? super R> order);
177+
170178
@Override
171179
ReactiveSqmSelectionQuery<R> setFetchSize(int fetchSize);
172180

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

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
import org.hibernate.persister.entity.EntityPersister;
3636
import org.hibernate.query.BindableType;
3737
import org.hibernate.query.IllegalQueryOperationException;
38+
import org.hibernate.query.Order;
3839
import org.hibernate.query.QueryParameter;
3940
import org.hibernate.query.ResultListTransformer;
4041
import org.hibernate.query.TupleTransformer;
@@ -459,6 +460,18 @@ public ReactiveQuerySqmImpl<R> setLockMode(String alias, LockMode lockMode) {
459460
return this;
460461
}
461462

463+
@Override
464+
public ReactiveQuerySqmImpl<R> setOrder(List<Order<? super R>> orders) {
465+
super.setOrder( orders );
466+
return this;
467+
}
468+
469+
@Override
470+
public ReactiveQuerySqmImpl<R> setOrder(Order<? super R> order) {
471+
super.setOrder( order );
472+
return this;
473+
}
474+
462475
@Override
463476
public <T> ReactiveQuerySqmImpl<T> setTupleTransformer(TupleTransformer<T> transformer) {
464477
throw new UnsupportedOperationException();

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

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import org.hibernate.graph.spi.RootGraphImplementor;
2727
import org.hibernate.internal.util.collections.IdentitySet;
2828
import org.hibernate.query.BindableType;
29+
import org.hibernate.query.Order;
2930
import org.hibernate.query.QueryLogging;
3031
import org.hibernate.query.QueryParameter;
3132
import org.hibernate.query.internal.DelegatingDomainQueryExecutionContext;
@@ -251,6 +252,18 @@ public ReactiveSqmSelectionQueryImpl<R> setFollowOnLocking(boolean enable) {
251252
return this;
252253
}
253254

255+
@Override
256+
public ReactiveSqmSelectionQueryImpl<R> setOrder(List<Order<? super R>> orders) {
257+
super.setOrder( orders );
258+
return this;
259+
}
260+
261+
@Override
262+
public ReactiveSqmSelectionQueryImpl<R> setOrder(Order<? super R> order) {
263+
super.setOrder( order );
264+
return this;
265+
}
266+
254267
@Override
255268
public ReactiveSqmSelectionQueryImpl<R> setFetchSize(int fetchSize) {
256269
super.setFetchSize( fetchSize );

hibernate-reactive-core/src/main/java/org/hibernate/reactive/stage/Stage.java

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import org.hibernate.engine.spi.SharedSessionContractImplementor;
2828
import org.hibernate.jpa.internal.util.FlushModeTypeHelper;
2929
import org.hibernate.proxy.HibernateProxy;
30+
import org.hibernate.query.Order;
3031
import org.hibernate.query.Page;
3132
import org.hibernate.reactive.common.AffectedEntities;
3233
import org.hibernate.reactive.common.Identifier;
@@ -347,6 +348,30 @@ default SelectionQuery<R> setLockMode(String alias, LockModeType lockModeType) {
347348
// */
348349
// Query<R> setLockOptions(LockOptions lockOptions);
349350

351+
/**
352+
* If the result type of this query is an entity class, add one or more
353+
* {@linkplain Order rules} for ordering the query results.
354+
*
355+
* @param orderList one or more instances of {@link Order}
356+
*
357+
* @see Order
358+
*
359+
* @see org.hibernate.query.Query#setOrder(List)
360+
*/
361+
SelectionQuery<R> setOrder(List<Order<? super R>> orderList);
362+
363+
/**
364+
* If the result type of this query is an entity class, add a
365+
* {@linkplain Order rule} for ordering the query results.
366+
*
367+
* @param order an instance of {@link Order}
368+
*
369+
* @see Order
370+
*
371+
* @see org.hibernate.query.Query#setOrder(Order)
372+
*/
373+
SelectionQuery<R> setOrder(Order<? super R> order);
374+
350375
/**
351376
* Set the {@link EntityGraph} that will be used as a fetch plan for
352377
* the root entity returned by this query.

hibernate-reactive-core/src/main/java/org/hibernate/reactive/stage/impl/StageQueryImpl.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import org.hibernate.LockMode;
1414
import org.hibernate.graph.GraphSemantic;
1515
import org.hibernate.graph.spi.RootGraphImplementor;
16+
import org.hibernate.query.Order;
1617
import org.hibernate.query.Page;
1718
import org.hibernate.reactive.query.ReactiveQuery;
1819
import org.hibernate.reactive.stage.Stage;
@@ -59,6 +60,18 @@ public Query<R> setLockMode(LockMode lockMode) {
5960
return this;
6061
}
6162

63+
@Override
64+
public Stage.SelectionQuery<R> setOrder(List<Order<? super R>> orders) {
65+
delegate.setOrder( orders );
66+
return this;
67+
}
68+
69+
@Override
70+
public Stage.SelectionQuery<R> setOrder(Order<? super R> order) {
71+
delegate.setOrder( (List<Order<? super R>>) order );
72+
return this;
73+
}
74+
6275
@Override
6376
public Query<R> setPlan(EntityGraph<R> entityGraph) {
6477
delegate.applyGraph( (RootGraphImplementor<?>) entityGraph, GraphSemantic.FETCH );

hibernate-reactive-core/src/main/java/org/hibernate/reactive/stage/impl/StageSelectionQueryImpl.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
*/
66
package org.hibernate.reactive.stage.impl;
77

8+
import java.lang.invoke.MethodHandles;
89
import java.util.List;
910
import java.util.concurrent.CompletionStage;
1011

@@ -13,7 +14,10 @@
1314
import org.hibernate.LockMode;
1415
import org.hibernate.graph.GraphSemantic;
1516
import org.hibernate.graph.spi.RootGraphImplementor;
17+
import org.hibernate.query.Order;
1618
import org.hibernate.query.Page;
19+
import org.hibernate.reactive.logging.impl.Log;
20+
import org.hibernate.reactive.logging.impl.LoggerFactory;
1721
import org.hibernate.reactive.query.ReactiveSelectionQuery;
1822
import org.hibernate.reactive.stage.Stage.SelectionQuery;
1923

@@ -25,6 +29,7 @@
2529
import jakarta.persistence.Parameter;
2630

2731
public class StageSelectionQueryImpl<T> implements SelectionQuery<T> {
32+
private static final Log LOG = LoggerFactory.make( Log.class, MethodHandles.lookup() );
2833
private final ReactiveSelectionQuery<T> delegate;
2934

3035
public StageSelectionQueryImpl(ReactiveSelectionQuery<T> delegate) {
@@ -188,6 +193,18 @@ public SelectionQuery<T> setLockMode(String alias, LockMode lockMode) {
188193
return this;
189194
}
190195

196+
@Override
197+
public SelectionQuery<T> setOrder(List<Order<? super T>> orders) {
198+
delegate.setOrder( orders );
199+
return this;
200+
}
201+
202+
@Override
203+
public SelectionQuery<T> setOrder(Order<? super T> order) {
204+
delegate.setOrder( order );
205+
return this;
206+
}
207+
191208
@Override
192209
public SelectionQuery<T> setParameter(String name, Object value) {
193210
delegate.setParameter( name, value );

0 commit comments

Comments
 (0)