【问题标题】:joining @ManyToOne's @OneToMany加入@ManyToOne 的@OneToMany
【发布时间】:2013-03-25 05:19:12
【问题描述】:
  1. 每个Account 都有一个Origin 通过@ManyToOne
  2. 每个Origins 都有Shadows 通过@OneToMany

有了Root<Account>,我怎样才能加入那些Shadows,以便我可以在哪里为他们设置一些条件?

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

【问题讨论】:

  • JPA 是 jpa1.0 还是 jpa2.0?你可以使用 Root 吗?
  • 在我的app中,我使用了join()方法,大家可以看看。我不知道它是否有效,所以我决定不发布我的答案。

标签: jpa join criteria-api


【解决方案1】:

假设Origin实体中的@OneToMany属性名为shadows,则需要使用Join如下:

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

然后,您可以在 Shadows 属性上编写条件,就像在这个简单的字符串案例中一样,因为 Join&lt;Z,X&gt; 具有 Path&lt;X&gt; 作为 SuperInterface:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-31
    • 1970-01-01
    • 2015-02-18
    • 2016-11-14
    • 1970-01-01
    • 1970-01-01
    • 2016-02-28
    • 1970-01-01
    相关资源
    最近更新 更多