加入@ ManyToOne的@OneToMany

时间:2013-03-25 05:19:13

标签: jpa join jpql criteria-api

  1. 每个Account都有一个Origin来自@ManyToOne
  2. 每个OriginShadow通过@OneToMany
  3. 在给定Root<Account>的情况下,我如何加入Shadow这些以便我可以在哪些地方添加条件?

    final Root<Account> account;
    final Path<Origin> origin = account.get(Account_.origin);
    

1 个答案:

答案 0 :(得分:1)

如果@OneToMany实体中的Origin属性被称为shadows,则需要使用Join,如下所示:

Join<Origin, Shadow> shadows = origin.join(Origin_.shadows);

然后,您可以在Shadow属性上编写条件,就像在这个简单的String情况下一样,因为Join<Z,X>具有Path<X>作为SuperInterface:

String name;
Predicate condition = criteriaBuilder.equals(shadows.get(Shadow_.name, name));