我想选择我想要的孩子的父母。
但是当我选择我的父母时,我必须展示所有的孩子
我该怎么做?
示例:
public class parent{
private Integer id;
@OnetoMany
@JoinColumn(name="parentId")
private List<child> children;
}
public class child{
private Integer id;
private Integer parentId;
}
findByIdAndchildType(Integer id, String type)
我想看:父(id) - &gt;孩子(类型)
但我可以看到父母(身份证) - &gt;儿童(othertype),儿童(othertype1),儿童(类型)
答案 0 :(得分:0)
听起来你正试图获得双向关系。这可以通过将映射添加到关系的两端来实现。
例如,向@ManyToOne
实体添加Child
映射。请注意,您应该删除parentId
字段,因为现在您可以使用child.getParent().getId()
来访问它。
@Entity
public class Child {
@Id
private Integer id;
@ManyToOne
@JoinColumn(name = "parentId")
private Parent parent;
// Remove parentId field
// Getters + Setters ...
}
注意:如果您想保留
parentId
字段,则必须选择哪两个映射(getParentId()
或getParent().getId()
)您想用于插入和更新实体。其他字段应同时包含insertable = false
和updatable = false
。
下一步是将@OneToMany
映射更改为使用mappedBy
:
@Entity
public class Parent {
@Id
private Integer id;
@OneToMany(mappedBy = "parent") // Change this
private List<Child> children;
// Getters + Setters ...
}
如果要使用其父级检索特定子级,现在可以为Child
个实体创建存储库:
public interface ChildRepository extends JpaRepository<Child, Integer> {
}
之后,您可以使用以下方式获得特定的孩子:
Optional<Child> child = repository.findById(123); // 123 is the ID of the child in this case
Optional<Parent> parent = child.map(Child::getParent);
Spring Boot 1.x将是:
Child child = repository.findOne(123);
Parent parent = null;
if (child != null) {
parent = child.getParent();
}