All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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