Search in sources :

Example 6 with Selection

use of javax.persistence.criteria.Selection in project adeptj-modules by AdeptJ.

the class EclipseLinkCrudRepository method findByCriteriaAndMapConstructor.

/**
 * {@inheritDoc}
 */
@Override
public <T extends BaseEntity, C> List<C> findByCriteriaAndMapConstructor(ConstructorCriteria<T, C> criteria) {
    EntityManager em = this.emf.createEntityManager();
    try {
        CriteriaBuilder cb = em.getCriteriaBuilder();
        CriteriaQuery<C> cq = cb.createQuery(criteria.getConstructorClass());
        Root<T> root = cq.from(criteria.getEntity());
        return em.createQuery(cq.select(cb.construct(criteria.getConstructorClass(), criteria.getSelections().stream().map(root::get).toArray(Selection[]::new))).where(JpaUtil.getPredicates(criteria.getCriteriaAttributes(), cb, root))).getResultList();
    } catch (RuntimeException ex) {
        LOGGER.error(ex.getMessage(), ex);
        throw new PersistenceException(ex.getMessage(), ex);
    } finally {
        JpaUtil.closeEntityManager(em);
    }
}
Also used : CriteriaBuilder(javax.persistence.criteria.CriteriaBuilder) EntityManager(javax.persistence.EntityManager) Selection(javax.persistence.criteria.Selection) PersistenceException(com.adeptj.modules.data.jpa.PersistenceException)

Example 7 with Selection

use of javax.persistence.criteria.Selection in project jbpm by kiegroup.

the class DistincVsJoinPerformanceTest method doJoinQuery.

private long doJoinQuery(EntityManager em, String userId, List<String> groupIds, int total) {
    CriteriaBuilder builder = em.getCriteriaBuilder();
    CriteriaQuery<TaskImpl> joinQuery = builder.createQuery(TaskImpl.class);
    Root<TaskImpl> taskRoot = joinQuery.from(TaskImpl.class);
    Join<TaskImpl, TaskDataImpl> join = taskRoot.join(TaskImpl_.taskData);
    Selection select = getTaskSummarySelect(builder, taskRoot);
    joinQuery.select(select);
    Join<TaskImpl, PeopleAssignmentsImpl> peopleAssign = taskRoot.join(TaskImpl_.peopleAssignments);
    ListJoin<PeopleAssignmentsImpl, OrganizationalEntityImpl> busAdmins = peopleAssign.join(PeopleAssignmentsImpl_.businessAdministrators, JoinType.LEFT);
    ListJoin<PeopleAssignmentsImpl, OrganizationalEntityImpl> potOwners = peopleAssign.join(PeopleAssignmentsImpl_.potentialOwners, JoinType.LEFT);
    ListJoin<PeopleAssignmentsImpl, OrganizationalEntityImpl> stakeHols = peopleAssign.join(PeopleAssignmentsImpl_.taskStakeholders, JoinType.LEFT);
    List<Predicate> predicates = new ArrayList<Predicate>();
    predicates.add(builder.equal(taskRoot.get(TaskImpl_.taskData).get(TaskDataImpl_.actualOwner).get(UserImpl_.id), userId));
    predicates.add(builder.equal(taskRoot.get(TaskImpl_.taskData).get(TaskDataImpl_.createdBy).get(UserImpl_.id), userId));
    predicates.add(builder.or(builder.equal(busAdmins.get(OrganizationalEntityImpl_.id), userId), busAdmins.get(OrganizationalEntityImpl_.id).in(groupIds)));
    predicates.add(builder.or(builder.equal(potOwners.get(OrganizationalEntityImpl_.id), userId), potOwners.get(OrganizationalEntityImpl_.id).in(groupIds)));
    predicates.add(builder.or(builder.equal(stakeHols.get(OrganizationalEntityImpl_.id), userId), stakeHols.get(OrganizationalEntityImpl_.id).in(groupIds)));
    if (!predicates.isEmpty()) {
        joinQuery.where(builder.or(predicates.toArray(new Predicate[predicates.size()])));
    }
    return timeQueryExecution(em, joinQuery, null, total);
}
Also used : CriteriaBuilder(javax.persistence.criteria.CriteriaBuilder) OrganizationalEntityImpl(org.jbpm.services.task.impl.model.OrganizationalEntityImpl) TaskImpl(org.jbpm.services.task.impl.model.TaskImpl) Selection(javax.persistence.criteria.Selection) ArrayList(java.util.ArrayList) TaskDataImpl(org.jbpm.services.task.impl.model.TaskDataImpl) Predicate(javax.persistence.criteria.Predicate) PeopleAssignmentsImpl(org.jbpm.services.task.impl.model.PeopleAssignmentsImpl)

Example 8 with Selection

use of javax.persistence.criteria.Selection in project jbpm by kiegroup.

the class TaskSummaryQueryCriteriaUtil method getOrderByExpression.

@Override
protected <T, R> Expression getOrderByExpression(CriteriaQuery<R> query, Class<T> queryType, String orderByListId) {
    List<Selection<?>> selections = query.getSelection().getCompoundSelectionItems();
    Selection orderBySelection = null;
    if (orderByListId.equals(QueryParameterIdentifiers.TASK_ID_LIST)) {
        orderBySelection = selections.get(0);
    } else if (orderByListId.equals(QueryParameterIdentifiers.TASK_NAME_LIST)) {
        orderBySelection = selections.get(1);
    } else if (orderByListId.equals(QueryParameterIdentifiers.TASK_STATUS_LIST)) {
        orderBySelection = selections.get(4);
    } else if (orderByListId.equals(QueryParameterIdentifiers.CREATED_BY_LIST)) {
        orderBySelection = selections.get(8);
    } else if (orderByListId.equals(QueryParameterIdentifiers.CREATED_ON_LIST)) {
        orderBySelection = selections.get(9);
    } else if (orderByListId.equals(QueryParameterIdentifiers.PROCESS_INSTANCE_ID_LIST)) {
        orderBySelection = selections.get(14);
    }
    return (Expression<?>) orderBySelection;
}
Also used : Expression(javax.persistence.criteria.Expression) Selection(javax.persistence.criteria.Selection)

Aggregations

Selection (javax.persistence.criteria.Selection)8 CriteriaBuilder (javax.persistence.criteria.CriteriaBuilder)4 ArrayList (java.util.ArrayList)3 EntityManager (javax.persistence.EntityManager)2 CompoundSelection (javax.persistence.criteria.CompoundSelection)2 Predicate (javax.persistence.criteria.Predicate)2 PersistenceException (com.adeptj.modules.data.jpa.PersistenceException)1 NotImplementedException (com.peterphi.std.NotImplementedException)1 WQOrder (com.peterphi.std.guice.restclient.jaxb.webquery.WQOrder)1 WebQuery (com.peterphi.std.guice.restclient.jaxb.webquery.WebQuery)1 HashMap (java.util.HashMap)1 LinkedList (java.util.LinkedList)1 Map (java.util.Map)1 Tuple (javax.persistence.Tuple)1 TypedQuery (javax.persistence.TypedQuery)1 CriteriaQuery (javax.persistence.criteria.CriteriaQuery)1 Expression (javax.persistence.criteria.Expression)1 Order (javax.persistence.criteria.Order)1 ParameterExpression (javax.persistence.criteria.ParameterExpression)1 QuerySelection (org.apache.deltaspike.data.api.criteria.QuerySelection)1