与下面的类一样,一个父级可以有多个子级,我只想获取一个子级和父级
class entity Parent{
@OneToMany
private Set<Child> children;
}
实现这一点的一种方法是在Child中指定与Parent的关系,并在OnetoMany关系中使用mappedBy指定Child是关系的所有者
子女与父母的关系
@ManyToOne
@JoinColumn(name = "parent_id")
private Parent parent;
更新了父中的关系
@OneToMany(mappedBy = "parent")
private Set<Child> children;
创建一个ChildRepository并通过Id获取子级,这也将(热切地(获取父级
repository.findById(Long childId);
并不是真的建议抓取,但这是@ManytoOne的默认设置。最好用FetchType.LAZY标记它,并在单个查询中获取子项和父项
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "parent_id")
private Parent parent;
将查询添加到ChildRepository
@Query("SELECT c FROM Child c LEFT JOIN FETCH c.parent WHERE c.id = :childId)
Optional<Child> fetchChildAndParent(@Param("childId") Long childId);