Skip to content

Add createMutationQuery method that accept criterias #2094

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 5 commits into from
Feb 3, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,8 @@
import org.hibernate.proxy.HibernateProxy;
import org.hibernate.query.Order;
import org.hibernate.query.Page;
import org.hibernate.query.criteria.HibernateCriteriaBuilder;
import org.hibernate.query.criteria.JpaCriteriaInsert;
import org.hibernate.reactive.common.AffectedEntities;
import org.hibernate.reactive.common.Identifier;
import org.hibernate.reactive.common.ResultSetMapping;
Expand Down Expand Up @@ -957,6 +959,39 @@ default Uni<Void> lock(Object entity, LockModeType lockModeType) {
*/
MutationQuery createMutationQuery(String queryString);

/**
* Create an instance of {@link MutationQuery} for the given update tree.
*
* @param updateQuery the update criteria query
*
* @return The {@link MutationQuery} instance for manipulation and execution
*
* @see org.hibernate.query.QueryProducer#createMutationQuery(CriteriaUpdate)
*/
MutationQuery createMutationQuery(CriteriaUpdate<?> updateQuery);

/**
* Create an instance of {@link MutationQuery} for the given delete tree.
*
* @param deleteQuery the delete criteria query
*
* @return The {@link MutationQuery} instance for manipulation and execution
*
* @see org.hibernate.query.QueryProducer#createMutationQuery(CriteriaDelete)
*/
MutationQuery createMutationQuery(CriteriaDelete<?> deleteQuery);

/**
* Create a {@link MutationQuery} from the given insert select criteria tree
*
* @param insert the insert select criteria query
*
* @return The {@link MutationQuery} instance for manipulation and execution
*
* @see org.hibernate.query.QueryProducer#createMutationQuery(JpaCriteriaInsert)
*/
MutationQuery createMutationQuery(JpaCriteriaInsert<?> insert);

/**
* Create an instance of {@link Query} for the given HQL/JPQL query
* string or HQL/JPQL update or delete statement. In the case of an
Expand Down Expand Up @@ -2327,7 +2362,7 @@ default <T> Uni<T> withStatelessTransaction(Function<StatelessSession, Uni<T>> w
* @return an instance of {@link CriteriaBuilder} for creating
* criteria queries.
*/
CriteriaBuilder getCriteriaBuilder();
HibernateCriteriaBuilder getCriteriaBuilder();

/**
* Obtain the JPA {@link Metamodel} for the persistence unit.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
import org.hibernate.Cache;
import org.hibernate.internal.SessionCreationOptions;
import org.hibernate.internal.SessionFactoryImpl;
import org.hibernate.query.criteria.HibernateCriteriaBuilder;
import org.hibernate.reactive.common.spi.Implementor;
import org.hibernate.reactive.context.Context;
import org.hibernate.reactive.context.impl.BaseKey;
Expand All @@ -30,7 +31,6 @@
import org.hibernate.stat.Statistics;

import io.smallrye.mutiny.Uni;
import jakarta.persistence.criteria.CriteriaBuilder;
import jakarta.persistence.metamodel.Metamodel;

import static org.hibernate.reactive.common.InternalStateAssertions.assertUseOnEventLoop;
Expand Down Expand Up @@ -245,7 +245,7 @@ public <T> Uni<T> withStatelessTransaction(String tenantId, BiFunction<Mutiny.St
}

@Override
public CriteriaBuilder getCriteriaBuilder() {
public HibernateCriteriaBuilder getCriteriaBuilder() {
return delegate.getCriteriaBuilder();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
import org.hibernate.LockMode;
import org.hibernate.LockOptions;
import org.hibernate.graph.RootGraph;
import org.hibernate.query.criteria.JpaCriteriaInsert;
import org.hibernate.reactive.common.AffectedEntities;
import org.hibernate.reactive.common.Identifier;
import org.hibernate.reactive.common.ResultSetMapping;
Expand Down Expand Up @@ -124,6 +125,21 @@ public MutationQuery createMutationQuery(String queryString) {
return new MutinyMutationQueryImpl<>( delegate.createReactiveQuery( queryString ), factory );
}

@Override
public MutationQuery createMutationQuery(CriteriaUpdate<?> updateQuery) {
return new MutinyMutationQueryImpl<>( delegate.createReactiveMutationQuery( updateQuery ), factory );
}

@Override
public MutationQuery createMutationQuery(CriteriaDelete<?> deleteQuery) {
return new MutinyMutationQueryImpl<>( delegate.createReactiveMutationQuery( deleteQuery ), factory );
}

@Override
public MutationQuery createMutationQuery(JpaCriteriaInsert<?> insert) {
return new MutinyMutationQueryImpl<>( delegate.createReactiveMutationQuery( insert ), factory );
}

@Override @Deprecated
public <R> Query<R> createQuery(String queryString) {
return new MutinyQueryImpl<>( delegate.createReactiveQuery( queryString ), factory );
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
import org.hibernate.dialect.Dialect;
import org.hibernate.engine.spi.SessionFactoryImplementor;
import org.hibernate.engine.spi.SharedSessionContractImplementor;
import org.hibernate.query.criteria.JpaCriteriaInsertSelect;
import org.hibernate.query.criteria.JpaCriteriaInsert;
import org.hibernate.reactive.common.AffectedEntities;
import org.hibernate.reactive.common.ResultSetMapping;
import org.hibernate.reactive.query.ReactiveMutationQuery;
Expand Down Expand Up @@ -79,7 +79,7 @@ public interface ReactiveQueryProducer extends ReactiveConnectionSupplier {

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

<R> ReactiveMutationQuery<R> createReactiveMutationQuery(JpaCriteriaInsertSelect<R> insertSelect);
<R> ReactiveMutationQuery<R> createReactiveMutationQuery(JpaCriteriaInsert<R> insert);

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

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@
import org.hibernate.proxy.HibernateProxy;
import org.hibernate.proxy.LazyInitializer;
import org.hibernate.query.IllegalMutationQueryException;
import org.hibernate.query.criteria.JpaCriteriaInsertSelect;
import org.hibernate.query.criteria.JpaCriteriaInsert;
import org.hibernate.query.hql.spi.SqmQueryImplementor;
import org.hibernate.query.named.NamedResultSetMappingMemento;
import org.hibernate.query.spi.HqlInterpretation;
Expand All @@ -78,7 +78,7 @@
import org.hibernate.query.sqm.internal.SqmUtil;
import org.hibernate.query.sqm.tree.SqmStatement;
import org.hibernate.query.sqm.tree.delete.SqmDeleteStatement;
import org.hibernate.query.sqm.tree.insert.SqmInsertSelectStatement;
import org.hibernate.query.sqm.tree.insert.SqmInsertStatement;
import org.hibernate.query.sqm.tree.select.SqmQueryGroup;
import org.hibernate.query.sqm.tree.select.SqmQuerySpec;
import org.hibernate.query.sqm.tree.select.SqmSelectStatement;
Expand Down Expand Up @@ -543,10 +543,10 @@ public <R> ReactiveMutationQuery<R> createReactiveMutationQuery(CriteriaDelete<R
}

@Override
public <R> ReactiveMutationQuery<R> createReactiveMutationQuery(JpaCriteriaInsertSelect<R> insertSelect) {
public <R> ReactiveMutationQuery<R> createReactiveMutationQuery(JpaCriteriaInsert<R> insert) {
checkOpen();
try {
return createReactiveCriteriaQuery( (SqmInsertSelectStatement<R>) insertSelect, null );
return createReactiveCriteriaQuery( (SqmInsertStatement<R>) insert, null );
}
catch ( RuntimeException e ) {
throw getExceptionConverter().convert( e );
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@
import org.hibernate.proxy.HibernateProxy;
import org.hibernate.proxy.LazyInitializer;
import org.hibernate.query.IllegalMutationQueryException;
import org.hibernate.query.criteria.JpaCriteriaInsertSelect;
import org.hibernate.query.criteria.JpaCriteriaInsert;
import org.hibernate.query.hql.spi.SqmQueryImplementor;
import org.hibernate.query.named.NamedResultSetMappingMemento;
import org.hibernate.query.spi.HqlInterpretation;
Expand All @@ -55,7 +55,7 @@
import org.hibernate.query.sqm.internal.SqmUtil;
import org.hibernate.query.sqm.tree.SqmStatement;
import org.hibernate.query.sqm.tree.delete.SqmDeleteStatement;
import org.hibernate.query.sqm.tree.insert.SqmInsertSelectStatement;
import org.hibernate.query.sqm.tree.insert.SqmInsertStatement;
import org.hibernate.query.sqm.tree.select.SqmQueryGroup;
import org.hibernate.query.sqm.tree.select.SqmQuerySpec;
import org.hibernate.query.sqm.tree.select.SqmSelectStatement;
Expand Down Expand Up @@ -998,10 +998,10 @@ public <R> ReactiveMutationQuery<R> createReactiveMutationQuery(CriteriaDelete<R
}

@Override
public <R> ReactiveMutationQuery<R> createReactiveMutationQuery(JpaCriteriaInsertSelect<R> insertSelect) {
public <R> ReactiveMutationQuery<R> createReactiveMutationQuery(JpaCriteriaInsert<R> insert) {
checkOpen();
try {
return createReactiveCriteriaQuery( (SqmInsertSelectStatement<R>) insertSelect, null );
return createReactiveCriteriaQuery( (SqmInsertStatement<R>) insert, null );
}
catch ( RuntimeException e ) {
throw getExceptionConverter().convert( e );
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,8 @@
import org.hibernate.proxy.HibernateProxy;
import org.hibernate.query.Order;
import org.hibernate.query.Page;
import org.hibernate.query.criteria.HibernateCriteriaBuilder;
import org.hibernate.query.criteria.JpaCriteriaInsert;
import org.hibernate.reactive.common.AffectedEntities;
import org.hibernate.reactive.common.Identifier;
import org.hibernate.reactive.common.ResultSetMapping;
Expand Down Expand Up @@ -994,6 +996,39 @@ default CompletionStage<Void> lock(Object entity, LockModeType lockModeType) {
*/
MutationQuery createMutationQuery(String queryString);

/**
* Create an instance of {@link MutationQuery} for the given update tree.
*
* @param updateQuery the update criteria query
*
* @return The {@link MutationQuery} instance for manipulation and execution
*
* @see org.hibernate.query.QueryProducer#createMutationQuery(CriteriaUpdate)
*/
MutationQuery createMutationQuery(CriteriaUpdate<?> updateQuery);

/**
* Create an instance of {@link MutationQuery} for the given delete tree.
*
* @param deleteQuery the delete criteria query
*
* @return The {@link MutationQuery} instance for manipulation and execution
*
* @see org.hibernate.query.QueryProducer#createMutationQuery(CriteriaDelete)
*/
MutationQuery createMutationQuery(CriteriaDelete<?> deleteQuery);

/**
* Create a {@link MutationQuery} from the given insert select criteria tree
*
* @param insert the insert select criteria query
*
* @return The {@link MutationQuery} instance for manipulation and execution
*
* @see org.hibernate.query.QueryProducer#createMutationQuery(JpaCriteriaInsert)
*/
MutationQuery createMutationQuery(JpaCriteriaInsert<?> insert);

/**
* Create an instance of {@link Query} for the given HQL/JPQL query
* string or HQL/JPQL update or delete statement. In the case of an
Expand Down Expand Up @@ -1663,6 +1698,39 @@ default <T> CompletionStage<T> get(Class<T> entityClass, Object id, LockModeType
*/
MutationQuery createMutationQuery(String queryString);

/**
* Create an instance of {@link MutationQuery} for the given update tree.
*
* @param updateQuery the update criteria query
*
* @return The {@link MutationQuery} instance for manipulation and execution
*
* @see org.hibernate.query.QueryProducer#createMutationQuery(CriteriaUpdate)
*/
MutationQuery createMutationQuery(CriteriaUpdate<?> updateQuery);

/**
* Create an instance of {@link MutationQuery} for the given delete tree.
*
* @param deleteQuery the delete criteria query
*
* @return The {@link MutationQuery} instance for manipulation and execution
*
* @see org.hibernate.query.QueryProducer#createMutationQuery(CriteriaDelete)
*/
MutationQuery createMutationQuery(CriteriaDelete<?> deleteQuery);

/**
* Create a {@link MutationQuery} from the given insert select criteria tree
*
* @param insert the insert select criteria query
*
* @return The {@link MutationQuery} instance for manipulation and execution
*
* @see org.hibernate.query.QueryProducer#createMutationQuery(JpaCriteriaInsert)
*/
MutationQuery createMutationQuery(JpaCriteriaInsert<?> insert);

/**
* Create an instance of {@link Query} for the given SQL query string,
* or SQL update, insert, or delete statement. In the case of an update,
Expand Down Expand Up @@ -2362,7 +2430,7 @@ default <T> CompletionStage<T> withStatelessTransaction(Function<StatelessSessio
* @return an instance of {@link CriteriaBuilder} for creating
* criteria queries.
*/
CriteriaBuilder getCriteriaBuilder();
HibernateCriteriaBuilder getCriteriaBuilder();

/**
* Obtain the JPA {@link Metamodel} for the persistence unit.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,11 @@
*/
package org.hibernate.reactive.stage.impl;

import jakarta.persistence.criteria.CriteriaBuilder;
import jakarta.persistence.metamodel.Metamodel;
import org.hibernate.Cache;
import org.hibernate.internal.SessionCreationOptions;
import org.hibernate.internal.SessionFactoryImpl;
import org.hibernate.query.criteria.HibernateCriteriaBuilder;
import org.hibernate.reactive.common.spi.Implementor;
import org.hibernate.reactive.context.Context;
import org.hibernate.reactive.context.impl.BaseKey;
Expand Down Expand Up @@ -274,7 +274,7 @@ public boolean isOpen() {
}

@Override
public CriteriaBuilder getCriteriaBuilder() {
public HibernateCriteriaBuilder getCriteriaBuilder() {
return delegate.getCriteriaBuilder();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
import org.hibernate.LockOptions;
import org.hibernate.graph.RootGraph;
import org.hibernate.jpa.internal.util.LockModeTypeHelper;
import org.hibernate.query.criteria.JpaCriteriaInsert;
import org.hibernate.reactive.common.AffectedEntities;
import org.hibernate.reactive.common.Identifier;
import org.hibernate.reactive.common.ResultSetMapping;
Expand Down Expand Up @@ -117,6 +118,21 @@ public MutationQuery createMutationQuery(String queryString) {
return new StageMutationQueryImpl<>( delegate.createReactiveMutationQuery( queryString ) );
}

@Override
public MutationQuery createMutationQuery(CriteriaUpdate<?> updateQuery) {
return new StageMutationQueryImpl<>( delegate.createReactiveMutationQuery( updateQuery ) );
}

@Override
public MutationQuery createMutationQuery(CriteriaDelete<?> deleteQuery) {
return new StageMutationQueryImpl<>( delegate.createReactiveMutationQuery( deleteQuery ) );
}

@Override
public MutationQuery createMutationQuery(JpaCriteriaInsert<?> insert) {
return new StageMutationQueryImpl<>( delegate.createReactiveMutationQuery( insert ) );
}

@Override
public <T> CompletionStage<T> find(Class<T> entityClass, Object primaryKey) {
return delegate.reactiveFind( entityClass, primaryKey, null, null );
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import jakarta.persistence.criteria.CriteriaUpdate;
import org.hibernate.LockMode;
import org.hibernate.graph.spi.RootGraphImplementor;
import org.hibernate.query.criteria.JpaCriteriaInsert;
import org.hibernate.reactive.common.ResultSetMapping;
import org.hibernate.reactive.pool.ReactiveConnection;
import org.hibernate.reactive.session.ReactiveStatelessSession;
Expand Down Expand Up @@ -276,6 +277,21 @@ public MutationQuery createMutationQuery(String queryString) {
return new StageMutationQueryImpl<>( delegate.createReactiveMutationQuery( queryString ) );
}

@Override
public MutationQuery createMutationQuery(CriteriaUpdate<?> updateQuery) {
return new StageMutationQueryImpl<>( delegate.createReactiveMutationQuery( updateQuery ) );
}

@Override
public MutationQuery createMutationQuery(CriteriaDelete<?> deleteQuery) {
return new StageMutationQueryImpl<>( delegate.createReactiveMutationQuery( deleteQuery ) );
}

@Override
public MutationQuery createMutationQuery(JpaCriteriaInsert<?> insert) {
return new StageMutationQueryImpl<>( delegate.createReactiveMutationQuery( insert ) );
}

@Override
public <R> SelectionQuery<R> createQuery(String queryString, Class<R> resultType) {
return new StageSelectionQueryImpl<>( delegate.createReactiveQuery( queryString, resultType ) );
Expand Down
Loading
Loading