Skip to content

Commit 41506a4

Browse files
committed
[#2104] Create QueryProducer interface for the sessions
1 parent 160c8c3 commit 41506a4

File tree

7 files changed

+1106
-1487
lines changed

7 files changed

+1106
-1487
lines changed

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

+497-696
Large diffs are not rendered by default.

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

+18-13
Original file line numberDiff line numberDiff line change
@@ -5,18 +5,6 @@
55
*/
66
package org.hibernate.reactive.mutiny.impl;
77

8-
import io.smallrye.mutiny.Uni;
9-
import jakarta.persistence.CacheRetrieveMode;
10-
import jakarta.persistence.CacheStoreMode;
11-
import jakarta.persistence.EntityGraph;
12-
import jakarta.persistence.FlushModeType;
13-
import jakarta.persistence.LockModeType;
14-
import jakarta.persistence.PersistenceException;
15-
import jakarta.persistence.TypedQueryReference;
16-
import jakarta.persistence.criteria.CriteriaDelete;
17-
import jakarta.persistence.criteria.CriteriaQuery;
18-
import jakarta.persistence.criteria.CriteriaUpdate;
19-
import jakarta.persistence.metamodel.Attribute;
208
import org.hibernate.CacheMode;
219
import org.hibernate.Filter;
2210
import org.hibernate.FlushMode;
@@ -40,6 +28,19 @@
4028
import org.hibernate.reactive.session.ReactiveQueryProducer;
4129
import org.hibernate.reactive.session.ReactiveSession;
4230

31+
import io.smallrye.mutiny.Uni;
32+
import jakarta.persistence.CacheRetrieveMode;
33+
import jakarta.persistence.CacheStoreMode;
34+
import jakarta.persistence.EntityGraph;
35+
import jakarta.persistence.FlushModeType;
36+
import jakarta.persistence.LockModeType;
37+
import jakarta.persistence.PersistenceException;
38+
import jakarta.persistence.TypedQueryReference;
39+
import jakarta.persistence.criteria.CriteriaBuilder;
40+
import jakarta.persistence.criteria.CriteriaDelete;
41+
import jakarta.persistence.criteria.CriteriaQuery;
42+
import jakarta.persistence.criteria.CriteriaUpdate;
43+
import jakarta.persistence.metamodel.Attribute;
4344
import java.lang.invoke.MethodHandles;
4445
import java.util.List;
4546
import java.util.concurrent.CompletionStage;
@@ -48,7 +49,6 @@
4849

4950
import static org.hibernate.reactive.util.impl.CompletionStages.applyToAll;
5051

51-
5252
/**
5353
* Implements the {@link Mutiny.Session} API. This delegating class is
5454
* needed to avoid name clashes when implementing both
@@ -578,6 +578,11 @@ public Mutiny.SessionFactory getFactory() {
578578
return factory;
579579
}
580580

581+
@Override
582+
public CriteriaBuilder getCriteriaBuilder() {
583+
return getFactory().getCriteriaBuilder();
584+
}
585+
581586
@Override
582587
public <T> ResultSetMapping<T> getResultSetMapping(Class<T> resultType, String mappingName) {
583588
return delegate.getResultSetMapping( resultType, mappingName );

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

+46-30
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,10 @@
55
*/
66
package org.hibernate.reactive.mutiny.impl;
77

8-
import io.smallrye.mutiny.Uni;
9-
import jakarta.persistence.EntityGraph;
10-
import jakarta.persistence.TypedQueryReference;
11-
import jakarta.persistence.criteria.CriteriaDelete;
12-
import jakarta.persistence.criteria.CriteriaQuery;
13-
import jakarta.persistence.criteria.CriteriaUpdate;
148
import org.hibernate.LockMode;
159
import org.hibernate.graph.spi.RootGraphImplementor;
10+
import org.hibernate.query.criteria.JpaCriteriaInsert;
11+
import org.hibernate.reactive.common.AffectedEntities;
1612
import org.hibernate.reactive.common.ResultSetMapping;
1713
import org.hibernate.reactive.mutiny.Mutiny;
1814
import org.hibernate.reactive.mutiny.Mutiny.Query;
@@ -21,13 +17,19 @@
2117
import org.hibernate.reactive.query.ReactiveQuery;
2218
import org.hibernate.reactive.session.ReactiveStatelessSession;
2319

20+
import io.smallrye.mutiny.Uni;
21+
import jakarta.persistence.EntityGraph;
22+
import jakarta.persistence.TypedQueryReference;
23+
import jakarta.persistence.criteria.CriteriaBuilder;
24+
import jakarta.persistence.criteria.CriteriaDelete;
25+
import jakarta.persistence.criteria.CriteriaQuery;
26+
import jakarta.persistence.criteria.CriteriaUpdate;
2427
import java.util.List;
2528
import java.util.concurrent.CompletableFuture;
2629
import java.util.concurrent.CompletionStage;
2730
import java.util.function.Function;
2831
import java.util.function.Supplier;
2932

30-
3133
/**
3234
* Implements the {@link Mutiny.StatelessSession} API. This delegating
3335
* class is needed to avoid name clashes when implementing both
@@ -47,7 +49,6 @@ public ReactiveConnection getReactiveConnection() {
4749
return delegate.getReactiveConnection();
4850
}
4951

50-
5152
<T> Uni<T> uni(Supplier<CompletionStage<T>> stageSupplier) {
5253
return factory.uni( stageSupplier );
5354
}
@@ -91,12 +92,42 @@ public <R> SelectionQuery<R> createQuery(String queryString, Class<R> resultType
9192

9293
@Override
9394
public <R> SelectionQuery<R> createSelectionQuery(String queryString, Class<R> resultType) {
94-
return new MutinySelectionQueryImpl<>( delegate.createReactiveSelectionQuery( queryString, resultType), factory );
95+
return new MutinySelectionQueryImpl<>( delegate.createReactiveSelectionQuery( queryString, resultType ), factory );
9596
}
9697

9798
@Override
9899
public Mutiny.MutationQuery createMutationQuery(String queryString) {
99-
return new MutinyMutationQueryImpl<>( delegate.createReactiveMutationQuery( queryString), factory );
100+
return new MutinyMutationQueryImpl<>( delegate.createReactiveMutationQuery( queryString ), factory );
101+
}
102+
103+
@Override
104+
public Mutiny.MutationQuery createMutationQuery(CriteriaUpdate<?> updateQuery) {
105+
return new MutinyMutationQueryImpl<>( delegate.createReactiveMutationQuery( updateQuery ), factory );
106+
}
107+
108+
@Override
109+
public Mutiny.MutationQuery createMutationQuery(CriteriaDelete<?> deleteQuery) {
110+
return new MutinyMutationQueryImpl<>( delegate.createReactiveMutationQuery( deleteQuery ) , factory );
111+
}
112+
113+
@Override
114+
public Mutiny.MutationQuery createMutationQuery(JpaCriteriaInsert<?> insert) {
115+
return new MutinyMutationQueryImpl<>( delegate.createReactiveMutationQuery( insert ) , factory );
116+
}
117+
118+
@Override
119+
public <R> Query<R> createNativeQuery(String queryString, AffectedEntities affectedEntities) {
120+
return new MutinyQueryImpl<>( delegate.createReactiveNativeQuery( queryString, affectedEntities ), factory );
121+
}
122+
123+
@Override
124+
public <R> SelectionQuery<R> createNativeQuery(String queryString, Class<R> resultType, AffectedEntities affectedEntities) {
125+
return new MutinyQueryImpl<>( delegate.createReactiveNativeQuery( queryString, resultType, affectedEntities ), factory );
126+
}
127+
128+
@Override
129+
public <R> SelectionQuery<R> createNativeQuery(String queryString, ResultSetMapping<R> resultSetMapping, AffectedEntities affectedEntities) {
130+
return new MutinyQueryImpl<>( delegate.createReactiveNativeQuery( queryString, resultSetMapping, affectedEntities ), factory );
100131
}
101132

102133
@Override
@@ -259,26 +290,6 @@ public Object getIdentifier(Object entity) {
259290
return delegate.getIdentifier(entity);
260291
}
261292

262-
// @Override
263-
// public <T> ResultSetMapping<T> getResultSetMapping(Class<T> resultType, String mappingName) {
264-
// return delegate.getResultSetMapping( resultType, mappingName );
265-
// }
266-
//
267-
// @Override
268-
// public <T> EntityGraph<T> getEntityGraph(Class<T> entity, String name) {
269-
// return delegate.getEntityGraph( entity, name );
270-
// }
271-
//
272-
// @Override
273-
// public <T> EntityGraph<T> createEntityGraph(Class<T> entity) {
274-
// return delegate.createEntityGraph( entity );
275-
// }
276-
//
277-
// @Override
278-
// public <T> EntityGraph<T> createEntityGraph(Class<T> entity, String name) {
279-
// return delegate.createEntityGraph( entity, name );
280-
// }
281-
282293
@Override
283294
public <T> Uni<T> withTransaction(Function<Mutiny.Transaction, Uni<T>> work) {
284295
return currentTransaction == null ? new Transaction<T>().execute( work ) : work.apply( currentTransaction );
@@ -359,6 +370,11 @@ public MutinySessionFactoryImpl getFactory() {
359370
return factory;
360371
}
361372

373+
@Override
374+
public CriteriaBuilder getCriteriaBuilder() {
375+
return getFactory().getCriteriaBuilder();
376+
}
377+
362378
@Override
363379
public <T> ResultSetMapping<T> getResultSetMapping(Class<T> resultType, String mappingName) {
364380
return delegate.getResultSetMapping( resultType, mappingName );

hibernate-reactive-core/src/main/java/org/hibernate/reactive/session/ReactiveQueryProducer.java

+2-3
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,6 @@
55
*/
66
package org.hibernate.reactive.session;
77

8-
import jakarta.persistence.TypedQueryReference;
9-
import java.util.concurrent.CompletionStage;
10-
118
import org.hibernate.Incubating;
129
import org.hibernate.dialect.Dialect;
1310
import org.hibernate.engine.spi.SessionFactoryImplementor;
@@ -22,9 +19,11 @@
2219
import org.hibernate.reactive.query.ReactiveSelectionQuery;
2320

2421
import jakarta.persistence.EntityGraph;
22+
import jakarta.persistence.TypedQueryReference;
2523
import jakarta.persistence.criteria.CriteriaDelete;
2624
import jakarta.persistence.criteria.CriteriaQuery;
2725
import jakarta.persistence.criteria.CriteriaUpdate;
26+
import java.util.concurrent.CompletionStage;
2827

2928

3029
/**

0 commit comments

Comments
 (0)