@Override protected <T> Expression getEntityField(CriteriaQuery<T> query, String listId, Attribute attr) { if( attr == null ) { return null; } Root<TaskImpl> taskRoot = null; Join<TaskImpl, TaskDataImpl> taskDataJoin = null; Join<TaskImpl, PeopleAssignmentsImpl> peopAssignJoin = null; for( Root root : query.getRoots() ) { if( TaskImpl.class.equals(root.getJavaType()) ) { taskRoot = (Root<TaskImpl>) root; for( Join<TaskImpl, ?> join : taskRoot.getJoins() ) { if( TaskDataImpl.class.equals(join.getJavaType()) ) { taskDataJoin = (Join<TaskImpl, TaskDataImpl>) join; } else if( PeopleAssignmentsImpl.class.equals(join.getJavaType()) ) { peopAssignJoin = (Join<TaskImpl, PeopleAssignmentsImpl>) join; } } } } assert taskRoot != null : "Unable to find TaskImpl Root in query!"; if( taskDataJoin == null ) { taskDataJoin = taskRoot.join(TaskImpl_.taskData); } assert taskDataJoin != null : "Unable to find TaskDataImpl Join in query!"; return taskImplSpecificGetEntityField(query, taskRoot, taskDataJoin, peopAssignJoin, listId, attr); }
if( taskRoot != null ) { for( Join<TaskImpl,?> join : taskRoot.getJoins() ) { if( join.getJavaType().equals(PeopleAssignmentsImpl.class) ) { peopleAssignJoin = (Join<TaskImpl, PeopleAssignmentsImpl>) join; } else if( join.getJavaType().equals(TaskDataImpl.class) ) { taskDataJoin = (Join<TaskImpl,TaskDataImpl>) join;
private <T> void useDistinctWhenLefOuterJoinsPresent(CriteriaQuery<T> criteriaQuery) { boolean useDistinct = false; Root<TaskImpl> taskRoot = null; ROOTS_FOR: for( Root root : criteriaQuery.getRoots() ) { if( TaskImpl.class.equals(root.getJavaType()) ) { taskRoot = (Root<TaskImpl>) root; for( Join<TaskImpl, ?> taskJoin : taskRoot.getJoins() ) { if( PeopleAssignmentsImpl.class.equals(taskJoin.getJavaType()) ) { Join<TaskImpl, PeopleAssignmentsImpl> peopleAssignJoin = (Join<TaskImpl, PeopleAssignmentsImpl>) taskJoin; if( JoinType.LEFT.equals(peopleAssignJoin.getJoinType()) ) { useDistinct = true; break ROOTS_FOR; } for( Join peopleAssignJoinJoin : peopleAssignJoin.getJoins() ) { if( JoinType.LEFT.equals(peopleAssignJoinJoin.getJoinType()) ) { useDistinct = true; break ROOTS_FOR; } } } } } } if( useDistinct ) { criteriaQuery.distinct(true); } }
if( join.getJavaType().equals(toAttrJoinType) ) { if( join.getAttribute().equals(parentJoinAttr) ) { fieldParentJoin = (Join<F, T>) join;
private Optional<Join<Object, Object>> findCurrentJoinOfType(final Class<?> type) { return getCurrentJoins().stream().filter(j -> type.equals(j.getJavaType())).findAny(); }
private Optional<Join<Object, Object>> findCurrentJoinOfType(final Class<?> type) { return getCurrentJoins().stream().filter(j -> type.equals(j.getJavaType())).findAny(); }
/** * Find Joined Root of type clazz * * @param <T> * @param query the criteria query * @param rootClass the root class * @param joinClass the join class * @return the Join */ @SuppressWarnings("unchecked") public static <T, K> Join<T, K> findJoinedType(Root<T> root, Class<T> rootClass, Class<K> joinClass) { Join<T, K> join = null; for (Join<T, ?> j : root.getJoins()) { if (j.getJavaType().equals(joinClass)) { join = (Join<T, K>) j; } } return join; }
@Override protected <T> Expression getEntityField(CriteriaQuery<T> query, String listId, Attribute attr) { if( attr == null ) { return null; } Root<TaskImpl> taskRoot = null; Join<TaskImpl, TaskDataImpl> taskDataJoin = null; Join<TaskImpl, PeopleAssignmentsImpl> peopAssignJoin = null; for( Root root : query.getRoots() ) { if( TaskImpl.class.equals(root.getJavaType()) ) { taskRoot = (Root<TaskImpl>) root; for( Join<TaskImpl, ?> join : taskRoot.getJoins() ) { if( TaskDataImpl.class.equals(join.getJavaType()) ) { taskDataJoin = (Join<TaskImpl, TaskDataImpl>) join; } else if( PeopleAssignmentsImpl.class.equals(join.getJavaType()) ) { peopAssignJoin = (Join<TaskImpl, PeopleAssignmentsImpl>) join; } } } } assert taskRoot != null : "Unable to find TaskImpl Root in query!"; if( taskDataJoin == null ) { taskDataJoin = taskRoot.join(TaskImpl_.taskData); } assert taskDataJoin != null : "Unable to find TaskDataImpl Join in query!"; return taskImplSpecificGetEntityField(query, taskRoot, taskDataJoin, peopAssignJoin, listId, attr); }
final Join<Object, ?> join = (Join<Object, ?>) fieldPath; final From<?, Object> joinParent = join.getParent(); final Optional<Join<Object, Object>> currentJoinOfType = findCurrentJoinOfType(join.getJavaType()); if (currentJoinOfType.isPresent() && isOrLevel) {
if( taskRoot != null ) { for( Join<TaskImpl,?> join : taskRoot.getJoins() ) { if( join.getJavaType().equals(PeopleAssignmentsImpl.class) ) { peopleAssignJoin = (Join<TaskImpl, PeopleAssignmentsImpl>) join; } else if( join.getJavaType().equals(TaskDataImpl.class) ) { taskDataJoin = (Join<TaskImpl,TaskDataImpl>) join;
final Join<Object, ?> join = (Join<Object, ?>) fieldPath; final From<?, Object> joinParent = join.getParent(); final Optional<Join<Object, Object>> currentJoinOfType = findCurrentJoinOfType(join.getJavaType()); if (currentJoinOfType.isPresent() && isOrLevel) {
/** * Correlates a join object of the enclosing query to a join object of the * subquery and returns the subquery join object. * * @param parentJoin * join target of the containing query * @return subquery join */ public <X, Y> Join<X, Y> correlate(Join<X, Y> parentJoin){ this.correlatedJoins.add(parentJoin); JoinImpl join = new JoinImpl(parentJoin.getParentPath(), metamodel.managedType(parentJoin.getModel().getBindableJavaType()), metamodel, parentJoin.getJavaType(), internalCorrelate((FromImpl) parentJoin), parentJoin.getModel(), parentJoin.getJoinType(), (FromImpl) parentJoin); return join; } /**
private <T> void useDistinctWhenLefOuterJoinsPresent(CriteriaQuery<T> criteriaQuery) { boolean useDistinct = false; Root<TaskImpl> taskRoot = null; ROOTS_FOR: for( Root root : criteriaQuery.getRoots() ) { if( TaskImpl.class.equals(root.getJavaType()) ) { taskRoot = (Root<TaskImpl>) root; for( Join<TaskImpl, ?> taskJoin : taskRoot.getJoins() ) { if( PeopleAssignmentsImpl.class.equals(taskJoin.getJavaType()) ) { Join<TaskImpl, PeopleAssignmentsImpl> peopleAssignJoin = (Join<TaskImpl, PeopleAssignmentsImpl>) taskJoin; if( JoinType.LEFT.equals(peopleAssignJoin.getJoinType()) ) { useDistinct = true; break ROOTS_FOR; } for( Join peopleAssignJoinJoin : peopleAssignJoin.getJoins() ) { if( JoinType.LEFT.equals(peopleAssignJoinJoin.getJoinType()) ) { useDistinct = true; break ROOTS_FOR; } } } } } } if( useDistinct ) { criteriaQuery.distinct(true); } }
if( join.getJavaType().equals(toAttrJoinType) ) { if( join.getAttribute().equals(parentJoinAttr) ) { fieldParentJoin = (Join<F, T>) join;