【发布时间】:2020-05-14 13:14:41
【问题描述】:
我需要在一个查询中按子 ID 查找所有父实体,但结果我需要拥有所有子实体的父实体。父母总是只有一个孩子的集合(来自搜索的ID)。条件应该是 适用于搜索但不适用于获取孩子。是否可以在一个查询中执行此操作?请帮忙。
@Entity
@Table(name = "user_hub")
public class UserHub {
@Id
private Integer id;
private String name;
private String description;
@OneToMany(mappedBy = "hub", fetch = FetchType.LAZY)
private Set<UserHubMember> hubMembers= new HashSet<>();
}
@Entity
@Table(name = "user_hub_member")
public class UserHubMember implements Serializable {
private Integer id;
private string name;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "\"hubId\"", insertable = false, updatable = false)
private UserHub hub;
public UserHubMember () {
}
}
@Query("select uh from UserHub uh " +
"left join fetch uh.hubMembers hm" +
"where hm.id = :memberId"
)
List<UserHub> findAllByMemberId(Integer memberId);
【问题讨论】:
-
这个答案能解决你的问题吗? stackoverflow.com/a/61616565/4207306
-
不,结合实体图与 jpql 查询给出相同的结果
-
使用实体图和方法名查询,不要使用JPQL
-
不幸的是方法名查询和实体图结果一样
标签: java spring jpa spring-data-jpa