Skip to content

Commit eed9295

Browse files
committed
[hibernate#1885] Add createMutationQuery methods that accept insert and insertSelect criterias
1 parent 0c05b09 commit eed9295

File tree

8 files changed

+63
-10
lines changed

8 files changed

+63
-10
lines changed

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

+12
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import org.hibernate.proxy.HibernateProxy;
2727
import org.hibernate.query.Order;
2828
import org.hibernate.query.Page;
29+
import org.hibernate.query.criteria.JpaCriteriaInsert;
2930
import org.hibernate.reactive.common.AffectedEntities;
3031
import org.hibernate.reactive.common.Identifier;
3132
import org.hibernate.reactive.common.ResultSetMapping;
@@ -979,6 +980,17 @@ default Uni<Void> lock(Object entity, LockModeType lockModeType) {
979980
*/
980981
MutationQuery createMutationQuery(CriteriaDelete<?> deleteQuery);
981982

983+
/**
984+
* Create a {@link MutationQuery} from the given insert select criteria tree
985+
*
986+
* @param insert the insert select criteria query
987+
*
988+
* @return The {@link MutationQuery} instance for manipulation and execution
989+
*
990+
* @see org.hibernate.query.QueryProducer#createMutationQuery(JpaCriteriaInsert)
991+
*/
992+
MutationQuery createMutationQuery(JpaCriteriaInsert<?> insert);
993+
982994
/**
983995
* Create an instance of {@link Query} for the given HQL/JPQL query
984996
* string or HQL/JPQL update or delete statement. In the case of an

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

+6
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import org.hibernate.LockMode;
2323
import org.hibernate.LockOptions;
2424
import org.hibernate.graph.RootGraph;
25+
import org.hibernate.query.criteria.JpaCriteriaInsert;
2526
import org.hibernate.reactive.common.AffectedEntities;
2627
import org.hibernate.reactive.common.Identifier;
2728
import org.hibernate.reactive.common.ResultSetMapping;
@@ -134,6 +135,11 @@ public MutationQuery createMutationQuery(CriteriaDelete<?> deleteQuery) {
134135
return new MutinyMutationQueryImpl<>( delegate.createReactiveMutationQuery( deleteQuery ), factory );
135136
}
136137

138+
@Override
139+
public MutationQuery createMutationQuery(JpaCriteriaInsert<?> insert) {
140+
return new MutinyMutationQueryImpl<>( delegate.createReactiveMutationQuery( insert ), factory );
141+
}
142+
137143
@Override @Deprecated
138144
public <R> Query<R> createQuery(String queryString) {
139145
return new MutinyQueryImpl<>( delegate.createReactiveQuery( queryString ), factory );

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

+2-2
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
import org.hibernate.dialect.Dialect;
1212
import org.hibernate.engine.spi.SessionFactoryImplementor;
1313
import org.hibernate.engine.spi.SharedSessionContractImplementor;
14-
import org.hibernate.query.criteria.JpaCriteriaInsertSelect;
14+
import org.hibernate.query.criteria.JpaCriteriaInsert;
1515
import org.hibernate.reactive.common.AffectedEntities;
1616
import org.hibernate.reactive.common.ResultSetMapping;
1717
import org.hibernate.reactive.query.ReactiveMutationQuery;
@@ -79,7 +79,7 @@ public interface ReactiveQueryProducer extends ReactiveConnectionSupplier {
7979

8080
<R> ReactiveMutationQuery<R> createReactiveMutationQuery(CriteriaDelete<R> deleteQuery);
8181

82-
<R> ReactiveMutationQuery<R> createReactiveMutationQuery(JpaCriteriaInsertSelect<R> insertSelect);
82+
<R> ReactiveMutationQuery<R> createReactiveMutationQuery(JpaCriteriaInsert<R> insert);
8383

8484
<R> ReactiveMutationQuery<R> createNativeReactiveMutationQuery(String sqlString);
8585

hibernate-reactive-core/src/main/java/org/hibernate/reactive/session/impl/ReactiveSessionImpl.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@
6969
import org.hibernate.proxy.HibernateProxy;
7070
import org.hibernate.proxy.LazyInitializer;
7171
import org.hibernate.query.IllegalMutationQueryException;
72-
import org.hibernate.query.criteria.JpaCriteriaInsertSelect;
72+
import org.hibernate.query.criteria.JpaCriteriaInsert;
7373
import org.hibernate.query.hql.spi.SqmQueryImplementor;
7474
import org.hibernate.query.named.NamedResultSetMappingMemento;
7575
import org.hibernate.query.spi.HqlInterpretation;
@@ -78,7 +78,7 @@
7878
import org.hibernate.query.sqm.internal.SqmUtil;
7979
import org.hibernate.query.sqm.tree.SqmStatement;
8080
import org.hibernate.query.sqm.tree.delete.SqmDeleteStatement;
81-
import org.hibernate.query.sqm.tree.insert.SqmInsertSelectStatement;
81+
import org.hibernate.query.sqm.tree.insert.SqmInsertStatement;
8282
import org.hibernate.query.sqm.tree.select.SqmQueryGroup;
8383
import org.hibernate.query.sqm.tree.select.SqmQuerySpec;
8484
import org.hibernate.query.sqm.tree.select.SqmSelectStatement;
@@ -543,10 +543,10 @@ public <R> ReactiveMutationQuery<R> createReactiveMutationQuery(CriteriaDelete<R
543543
}
544544

545545
@Override
546-
public <R> ReactiveMutationQuery<R> createReactiveMutationQuery(JpaCriteriaInsertSelect<R> insertSelect) {
546+
public <R> ReactiveMutationQuery<R> createReactiveMutationQuery(JpaCriteriaInsert<R> insert) {
547547
checkOpen();
548548
try {
549-
return createReactiveCriteriaQuery( (SqmInsertSelectStatement<R>) insertSelect, null );
549+
return createReactiveCriteriaQuery( (SqmInsertStatement<R>) insert, null );
550550
}
551551
catch ( RuntimeException e ) {
552552
throw getExceptionConverter().convert( e );

hibernate-reactive-core/src/main/java/org/hibernate/reactive/session/impl/ReactiveStatelessSessionImpl.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@
4545
import org.hibernate.proxy.HibernateProxy;
4646
import org.hibernate.proxy.LazyInitializer;
4747
import org.hibernate.query.IllegalMutationQueryException;
48-
import org.hibernate.query.criteria.JpaCriteriaInsertSelect;
48+
import org.hibernate.query.criteria.JpaCriteriaInsert;
4949
import org.hibernate.query.hql.spi.SqmQueryImplementor;
5050
import org.hibernate.query.named.NamedResultSetMappingMemento;
5151
import org.hibernate.query.spi.HqlInterpretation;
@@ -55,7 +55,7 @@
5555
import org.hibernate.query.sqm.internal.SqmUtil;
5656
import org.hibernate.query.sqm.tree.SqmStatement;
5757
import org.hibernate.query.sqm.tree.delete.SqmDeleteStatement;
58-
import org.hibernate.query.sqm.tree.insert.SqmInsertSelectStatement;
58+
import org.hibernate.query.sqm.tree.insert.SqmInsertStatement;
5959
import org.hibernate.query.sqm.tree.select.SqmQueryGroup;
6060
import org.hibernate.query.sqm.tree.select.SqmQuerySpec;
6161
import org.hibernate.query.sqm.tree.select.SqmSelectStatement;
@@ -998,10 +998,10 @@ public <R> ReactiveMutationQuery<R> createReactiveMutationQuery(CriteriaDelete<R
998998
}
999999

10001000
@Override
1001-
public <R> ReactiveMutationQuery<R> createReactiveMutationQuery(JpaCriteriaInsertSelect<R> insertSelect) {
1001+
public <R> ReactiveMutationQuery<R> createReactiveMutationQuery(JpaCriteriaInsert<R> insert) {
10021002
checkOpen();
10031003
try {
1004-
return createReactiveCriteriaQuery( (SqmInsertSelectStatement<R>) insertSelect, null );
1004+
return createReactiveCriteriaQuery( (SqmInsertStatement<R>) insert, null );
10051005
}
10061006
catch ( RuntimeException e ) {
10071007
throw getExceptionConverter().convert( e );

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

+23
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import org.hibernate.proxy.HibernateProxy;
2828
import org.hibernate.query.Order;
2929
import org.hibernate.query.Page;
30+
import org.hibernate.query.criteria.JpaCriteriaInsert;
3031
import org.hibernate.reactive.common.AffectedEntities;
3132
import org.hibernate.reactive.common.Identifier;
3233
import org.hibernate.reactive.common.ResultSetMapping;
@@ -1016,6 +1017,17 @@ default CompletionStage<Void> lock(Object entity, LockModeType lockModeType) {
10161017
*/
10171018
MutationQuery createMutationQuery(CriteriaDelete<?> deleteQuery);
10181019

1020+
/**
1021+
* Create a {@link MutationQuery} from the given insert select criteria tree
1022+
*
1023+
* @param insert the insert select criteria query
1024+
*
1025+
* @return The {@link MutationQuery} instance for manipulation and execution
1026+
*
1027+
* @see org.hibernate.query.QueryProducer#createMutationQuery(JpaCriteriaInsert)
1028+
*/
1029+
MutationQuery createMutationQuery(JpaCriteriaInsert<?> insert);
1030+
10191031
/**
10201032
* Create an instance of {@link Query} for the given HQL/JPQL query
10211033
* string or HQL/JPQL update or delete statement. In the case of an
@@ -1707,6 +1719,17 @@ default <T> CompletionStage<T> get(Class<T> entityClass, Object id, LockModeType
17071719
*/
17081720
MutationQuery createMutationQuery(CriteriaDelete<?> deleteQuery);
17091721

1722+
/**
1723+
* Create a {@link MutationQuery} from the given insert select criteria tree
1724+
*
1725+
* @param insert the insert select criteria query
1726+
*
1727+
* @return The {@link MutationQuery} instance for manipulation and execution
1728+
*
1729+
* @see org.hibernate.query.QueryProducer#createMutationQuery(JpaCriteriaInsert)
1730+
*/
1731+
MutationQuery createMutationQuery(JpaCriteriaInsert<?> insert);
1732+
17101733
/**
17111734
* Create an instance of {@link Query} for the given SQL query string,
17121735
* or SQL update, insert, or delete statement. In the case of an update,

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

+6
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import org.hibernate.LockOptions;
2323
import org.hibernate.graph.RootGraph;
2424
import org.hibernate.jpa.internal.util.LockModeTypeHelper;
25+
import org.hibernate.query.criteria.JpaCriteriaInsert;
2526
import org.hibernate.reactive.common.AffectedEntities;
2627
import org.hibernate.reactive.common.Identifier;
2728
import org.hibernate.reactive.common.ResultSetMapping;
@@ -127,6 +128,11 @@ public MutationQuery createMutationQuery(CriteriaDelete<?> deleteQuery) {
127128
return new StageMutationQueryImpl<>( delegate.createReactiveMutationQuery( deleteQuery ) );
128129
}
129130

131+
@Override
132+
public MutationQuery createMutationQuery(JpaCriteriaInsert<?> insert) {
133+
return new StageMutationQueryImpl<>( delegate.createReactiveMutationQuery( insert ) );
134+
}
135+
130136
@Override
131137
public <T> CompletionStage<T> find(Class<T> entityClass, Object primaryKey) {
132138
return delegate.reactiveFind( entityClass, primaryKey, null, null );

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

+6
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import jakarta.persistence.criteria.CriteriaUpdate;
1212
import org.hibernate.LockMode;
1313
import org.hibernate.graph.spi.RootGraphImplementor;
14+
import org.hibernate.query.criteria.JpaCriteriaInsert;
1415
import org.hibernate.reactive.common.ResultSetMapping;
1516
import org.hibernate.reactive.pool.ReactiveConnection;
1617
import org.hibernate.reactive.session.ReactiveStatelessSession;
@@ -286,6 +287,11 @@ public MutationQuery createMutationQuery(CriteriaDelete<?> deleteQuery) {
286287
return new StageMutationQueryImpl<>( delegate.createReactiveMutationQuery( deleteQuery ) );
287288
}
288289

290+
@Override
291+
public MutationQuery createMutationQuery(JpaCriteriaInsert<?> insert) {
292+
return new StageMutationQueryImpl<>( delegate.createReactiveMutationQuery( insert ) );
293+
}
294+
289295
@Override
290296
public <R> SelectionQuery<R> createQuery(String queryString, Class<R> resultType) {
291297
return new StageSelectionQueryImpl<>( delegate.createReactiveQuery( queryString, resultType ) );

0 commit comments

Comments
 (0)