protected String addViewRootNode() { if (viewRootExpression != CORRELATION_VIEW_ROOT_ALIAS) { originalViewRootExpression = viewRootExpression; viewRootExpression = CORRELATION_VIEW_ROOT_ALIAS; // See addBatchPredicate for how the join node is added if (!batchedViewRoot) { criteriaBuilder.from(viewRootEntityType, CORRELATION_VIEW_ROOT_ALIAS); } } return viewRootExpression; }
@Override public JoinOnBuilder<CorrelationQueryBuilder> correlate(Class<?> entityClass) { if (correlationRoot != null) { throw new IllegalArgumentException("Can not correlate with multiple entity classes!"); } JoinOnBuilder<CorrelationQueryBuilder> correlationBuilder; if (batchSize > 1) { if (correlationBasisEntity != null) { criteriaBuilder.fromIdentifiableValues(correlationBasisEntity, correlationKeyAlias, batchSize); } else { criteriaBuilder.fromValues(correlationBasisType, correlationKeyAlias, batchSize); } correlationBuilder = (JoinOnBuilder<CorrelationQueryBuilder>) (JoinOnBuilder<?>) criteriaBuilder.innerJoinOn(entityClass, correlationAlias); } else { if (innerJoin) { correlationBuilder = (JoinOnBuilder<CorrelationQueryBuilder>) (JoinOnBuilder<?>) criteriaBuilder.innerJoinOn(entityClass, correlationAlias); } else { criteriaBuilder.from(entityClass, correlationAlias); correlationBuilder = criteriaBuilder.getService(JoinOnBuilder.class); } } this.correlationRoot = correlationResult; return correlationBuilder; }
@Override public JoinOnBuilder<CorrelationQueryBuilder> correlate(EntityType<?> entityType) { if (correlationRoot != null) { throw new IllegalArgumentException("Can not correlate with multiple entity classes!"); } JoinOnBuilder<CorrelationQueryBuilder> correlationBuilder; if (batchSize > 1) { if (correlationBasisEntity != null) { criteriaBuilder.fromIdentifiableValues(correlationBasisEntity, correlationKeyAlias, batchSize); } else { criteriaBuilder.fromValues(correlationBasisType, correlationKeyAlias, batchSize); } correlationBuilder = (JoinOnBuilder<CorrelationQueryBuilder>) (JoinOnBuilder<?>) criteriaBuilder.innerJoinOn(entityType, correlationAlias); } else { if (innerJoin) { correlationBuilder = (JoinOnBuilder<CorrelationQueryBuilder>) (JoinOnBuilder<?>) criteriaBuilder.innerJoinOn(entityType, correlationAlias); } else { criteriaBuilder.from(entityType, correlationAlias); correlationBuilder = criteriaBuilder.getService(JoinOnBuilder.class); } } this.correlationRoot = correlationResult; return correlationBuilder; } }
@Override protected String addViewRootNode() { if (embeddingViewPathSet) { return embeddingViewPath; } if (viewRootExpression != CORRELATION_EMBEDDING_VIEW_ALIAS) { originalViewRootExpression = viewRootExpression; viewRootExpression = CORRELATION_EMBEDDING_VIEW_ALIAS; // See addBatchPredicate for how the join node is added if (!batchedViewRoot) { criteriaBuilder.from(viewRootEntityType, CORRELATION_EMBEDDING_VIEW_ALIAS); } } return viewRootExpression; }