【发布时间】:2017-10-29 17:08:52
【问题描述】:
我有一个带有@OneToMany Account 子级的客户实体。 我想执行 fetch join 以返回具有相应活动帐户的客户(具有 account.isActive = true)。如果客户没有任何帐户,也需要退回。
对于下面的JPQL,对于有非活跃账户的客户,确实被过滤掉了,但是没有任何账户的客户没有返回:
@NamedQuery(name = "Customer.findById", query = "SELECT c FROM Customer c LEFT JOIN FETCH c.accounts a WHERE c.id = :id AND a.isActive=true")
编写查询以涵盖两种情况(没有帐户的客户和有活动帐户的客户)的简洁方法是什么?
【问题讨论】:
-
您是否已经定义了@OneToMany 关系?也就是说,客户是否有一个字段:“private Set
accounts”?如果是这样,您可以调用 customer.getAccounts() -
我需要 join fetch 以便在一次选择中检索父项和子项。我确实定义了这种关系。无论如何,稍后都会调用 customer.getAccounts(),但它与问题无关(关于 JPQL/HQL)。在没有孩子的情况下,没有客户可以调用(未检索到)
标签: hibernate join where fetch