【问题标题】:How to fetch an entity with all children associations in one query?如何在一个查询中获取具有所有子关联的实体?
【发布时间】:2020-06-21 04:03:39
【问题描述】:

我有一个名为 Ave 的 JPA 实体,它有两个子关联,如下所示:

@Entity
@Table(name = "ave")
@Access(AccessType.FIELD)
public class Ave implements Serializable {

  @ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.MERGE, targetEntity = Contact.class)
  @JoinTable(name = "ave_contact", joinColumns = @JoinColumn(name = "ave_id"), inverseJoinColumns = @JoinColumn(name = "potentialbuyer_id"))
  @Fetch(value = FetchMode.SUBSELECT)
  private List<Contact> allPotentialBuyers = new ArrayList<>();


  @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, targetEntity = Bid.class, mappedBy = "ave")
  @Fetch(value = FetchMode.JOIN)
  private Set<Bid> bids = new HashSet<>();

我想在一个 JPQL 查询中加载所有 Ave 实体和所有 bids 和所有 allPotentialBuyers(可能有多个 SQL 选择)。 (如何)有可能吗?

【问题讨论】:

标签: java sql database set jpql


【解决方案1】:

使用left join fetch:

entityManager.createQuery(
"select a " +
"from Ave a " +
"left join fetch a.allPotentialBuyers " +
"left join fetch a.bids", Ave.class
).getResultSet();

【讨论】:

    猜你喜欢
    • 2021-04-21
    • 1970-01-01
    • 1970-01-01
    • 2017-05-23
    • 1970-01-01
    • 2021-11-05
    • 1970-01-01
    • 1970-01-01
    • 2016-06-25
    相关资源
    最近更新 更多