/* Hibernate, Relational Persistence for Idiomatic Java * * SPDX-License-Identifier: LGPL-2.1-or-later * Copyright: Red Hat Inc. and Hibernate Authors */ package org.hibernate.reactive.session.impl; import org.hibernate.internal.SessionFactoryImpl; import org.hibernate.query.criteria.internal.CriteriaBuilderImpl; import javax.persistence.Tuple; import javax.persistence.criteria.CriteriaDelete; import javax.persistence.criteria.CriteriaQuery; import javax.persistence.criteria.CriteriaUpdate; /** * A JPA {@link javax.persistence.criteria.CriteriaBuilder} for * that acts as a factory for {@link ReactiveCriteriaQueryImpl}. * * @author Gavin King */ public class ReactiveCriteriaBuilderImpl extends CriteriaBuilderImpl { public ReactiveCriteriaBuilderImpl(SessionFactoryImpl sessionFactory) { super(sessionFactory); } @Override public CriteriaQuery<Object> createQuery() { return new ReactiveCriteriaQueryImpl<>( this, Object.class ); } @Override public <T> CriteriaQuery<T> createQuery(Class<T> resultClass) { return new ReactiveCriteriaQueryImpl<>( this, resultClass ); } @Override public <T> CriteriaUpdate<T> createCriteriaUpdate(Class<T> targetEntity) { return new ReactiveCriteriaUpdateImpl<>(this); } @Override public <T> CriteriaDelete<T> createCriteriaDelete(Class<T> targetEntity) { return new ReactiveCriteriaDeleteImpl<>(this); } @Override public CriteriaQuery<Tuple> createTupleQuery() { return new ReactiveCriteriaQueryImpl<>( this, Tuple.class ); } }