我有2个实体类,即父和子
儿童班
public class Child{
@Id
@Column(name="childId")
@GeneratedValue(strategy=GenerationType.IDENTITY)
private int childId;
@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "childId")
public Parent parent;
以下是父类
public class Parent
@Id
@Column(name="parentId")
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Integer parentId;
我有一个DAO方法如下
public List<parent> getParent(String executionStatus) {
List<parent> parentList = null;
Session session = null;
try {
session =sessionFactory.openSession();
parentList = session.createQuery(
"from parent where executionStatus='"+executionStatus+"' )
.list();
}
return parentList;
}
我从服务类访问此方法为
List<parent> parentList=userDAO.getParent("test");
我的问题是如何通过拥有父类列表
来检索子类列表答案 0 :(得分:0)
您可以按如下方式将映射添加到Parent
public class Parent {
@Id
@Column(name="parentId")
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Integer parentId;
@OneToMany(mappedBy="parent")
private List<Child> children
}
另外我建议将@JoinColumn(name = "childId")
更改为@JoinColumn(name = "parentId")
,将其更改为Child中的多对一映射
答案 1 :(得分:0)
您可能需要具有从父级到子级的映射,如下所示:
@OneToMany(fetch = FetchType.LAZY)
private List<Child> children;
然后:
parentList = session.createQuery(
"select p from Parent p join p.children c where p.executionStatus='"+executionStatus+"')
.list();
答案 2 :(得分:0)
你可以添加加入和检索孩子
childList = session.createQuery(
"from child c INNER JOIN c.parent p where p.executionStatus='"+executionStatus+"' )
.list();