如何在加入非主键列时编写JPA连接表达式?

时间:2013-06-13 20:44:50

标签: hibernate jpa join

我正在使用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");

但是,这假定表是通过主键链接的,而不是这种情况。

1 个答案:

答案 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)));