我正在使用JPA 2.0,Hibernate 4.1.0.Final和Spring 3.1.1.RELEASE。如何编写在非主键列上连接两个表的JPA连接?我有两个实体,Link和Training,都有一个orderId字段,但我不知道如何编写Join表达式。通常,我可以写
Root<Link>root=criteriaQuery.from(Link.class);
...
Join<Link, Training> link = root.join("trainingId");
但是,这假定表是通过主键链接的,而不是这种情况。
答案 0 :(得分:0)
与使用JPQL一样,您需要多个FROM实体
Root<Link> rootLink = criteriaQuery.from(Link.class);
Root<Training> rootTraining = criteriaQuery.from(Training.class);
...
criteriaQuery.where(criteriaBuilder.equal(rootLink.get(link_.linkAttribute), trainingLink.get(training_.trainingAttribute)));