我在连接中有多个表,每个表都有一个列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无法决定,我的意思是哪个表。
我怎样才能改变它?
谢谢 安德烈