首页 > 解决方案 > Hibernate:是否可以仅检索匹配条件的子项?

问题描述

我有以下一对多:

public class EntityA{
 ...
private List<EntityB> entities;
}

其中实体 b 具有:

public class EntityB{
     ...
     private String type;
}

现在,我对 entityA 进行查询,例如:

@Query("select a from EntityA a where a.field= :field)

是否有可能拥有整个 A 实体,但只有“类型”等于特定实体的孩子?我试着做:

@Query("select a from EntityA a where a.field= :field and a.entities.type in ('A', 'B'))

但这会导致零结果,而我的意图是用空列表检索实体 A。

标签: hibernatespring-data-jpa

解决方案


如果关系是双向的,或者您可以使其成为双向的,那么您可以从EntityB侧面查询它:

@Query("select b.entityA from EntityB b where b.type in ('A', 'B')")
public Set<EntityA> aEntities();

推荐阅读