如何在springjpa中获得单个子实体和父实体,其中子实体由一对多映射绑定,就像父实体有m一样



与下面的类一样,一个父级可以有多个子级,我只想获取一个子级和父级

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);

最新更新