JPQL连接表使列名称加倍

时间:2013-01-11 08:47:42

标签: join double eclipselink jpql criteria-api

我在连接中有多个表,每个表都有一个列ID。所以在resultig join中有很多ID列。我如何使用条件API访问特定的ID列?

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无法决定,我的意思是哪个表。

我怎样才能改变它?

谢谢 安德烈

0 个答案:

没有答案