public <Y> Join<T, Y> join(String associationPath, String alias) { Join<T, Y> v = join(associationPath); v.alias(alias); return v; }
protected Join<?, ?> createJoinFromPath(final String alias, final List<JPAElement> pathList, final From<?, ?> root, final JoinType finalJoinType) { Join<?, ?> join = null; JoinType jt; for (int i = 0; i < pathList.size(); i++) { if (i == pathList.size() - 1) jt = finalJoinType; else jt = JoinType.INNER; if (i == 0) { join = root.join(pathList.get(i).getInternalName(), jt); join.alias(alias); } else if (i < pathList.size()) { join = join.join(pathList.get(i).getInternalName(), jt); join.alias(pathList.get(i).getExternalName()); } } return join; }
@SuppressWarnings("unchecked") protected Join<UserEntity, NameEntity> createOrGetJoinForName(final Root<UserEntity> root) { for (final Join<UserEntity, ?> currentJoin : root.getJoins()) { if (currentJoin.getAlias() != null && currentJoin.getAlias().equals(JOIN_ALIAS_FOR_NAME)) { return (Join<UserEntity, NameEntity>) currentJoin; } } Join<UserEntity, NameEntity> join = root.join(UserEntity_.name, JoinType.LEFT); join.alias(JOIN_ALIAS_FOR_NAME); return join; }
.on(cb.in(from.get(parentIdAttribute.getName())).value(parentIdValue)); query.select(join.alias(attribute.getName()));
/** * Copy Joins * * @param from source Join * @param to destination Join */ public static void copyJoins(From<?, ?> from, From<?, ?> to) { for (Join<?, ?> j : from.getJoins()) { Join<?, ?> toJoin = to.join(j.getAttribute().getName(), j.getJoinType()); toJoin.alias(getOrCreateAlias(j)); copyJoins(j, toJoin); } for (Fetch<?, ?> f : from.getFetches()) { Fetch<?, ?> toFetch = to.fetch(f.getAttribute().getName()); copyFetches(f, toFetch); } }