Соединительные таблицы JPQL удваивают имена столбцов
У меня есть несколько таблиц в объединении, и каждая таблица имеет идентификатор столбца. Таким образом, в объединении результатов много столбцов идентификаторов. Как я могу получить доступ к определенному столбцу идентификатора с помощью API критериев?
ParameterExpression<A> idParam = criteriaBuilder.parameter(A.class, PARAM_NAME);
Subquery<B> sq = query.subquery(B.class);
Root<B> root = sq.from(B.class);
Join<C, D> joinTogether = root.join("memberX").join("memberY");
sq.select(root);
sq.where(criteriaBuilder.and(criteriaBuilder.equal(joinTogether.get("id"), idParam), criteriaBuilder.equal(parentQuery.get("id"), root.get("id"))));
Проблема в том, что в результирующем SQL содержится
SELECT 1 FROM E t6, B t5, C t4, D t3 WHERE ((( = paramName) AND (t0.ID = t5.ID)) AND (((t6.memberZ = t5.ID) AND (t4.ID = t6.memberX)) AND (t3.ID = t4.memberY))))
Таблица E (t6) является дополнительной таблицей соединений между таблицами B и C, t0 является ссылкой на родительский запрос. Вместо этого t3.id =:paramName EclipseLink ничего не создает непосредственно перед первым знаком равенства (paramName является содержимым константы PARAM_NAME). Моя идея состоит в том, что столбец "id" может ссылаться на все таблицы, а EclipseLink не может решить, какую таблицу я имею в виду.
Как я могу это изменить?
Спасибо Андре