
com.infobip.spring.data.jpa.SimpleQuerydslJpaFragment Maven / Gradle / Ivy
package com.infobip.spring.data.jpa;
import com.querydsl.core.types.*;
import com.querydsl.jpa.impl.*;
import com.querydsl.jpa.sql.JPASQLQuery;
import org.springframework.transaction.annotation.Transactional;
import javax.persistence.EntityManager;
import java.util.function.Function;
public class SimpleQuerydslJpaFragment implements QuerydslJpaFragment {
private final EntityPath path;
private final JPAQueryFactory jpaQueryFactory;
private final JPASQLQueryFactory jpaSqlQueryFactory;
private final EntityManager entityManager;
public SimpleQuerydslJpaFragment(EntityPath path,
JPAQueryFactory jpaQueryFactory,
JPASQLQueryFactory jpaSqlQueryFactory,
EntityManager entityManager) {
this.path = path;
this.jpaQueryFactory = jpaQueryFactory;
this.jpaSqlQueryFactory = jpaSqlQueryFactory;
this.entityManager = entityManager;
}
@Override
public O query(Function, O> query) {
return query.apply(jpaQueryFactory.query());
}
@Transactional
@Override
public long update(Function update) {
return update.apply(jpaQueryFactory.update(path));
}
@Transactional
@Override
public long deleteWhere(Predicate predicate) {
return jpaQueryFactory.delete(path).where(predicate).execute();
}
@SuppressWarnings("unchecked")
@Override
public O jpaSqlQuery(Function, O> query) {
return query.apply((JPASQLQuery) jpaSqlQueryFactory.create());
}
@Override
public SubQueryExpression jpaSqlSubQuery(Function, SubQueryExpression> query) {
return jpaSqlQuery(query);
}
@Transactional
@Override
public O executeStoredProcedure(String name, Function query) {
return query.apply(new StoredProcedureQueryBuilder(name, entityManager));
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy