Hibernate 从多对一/一对多映射获取数据
我有两张桌子: 计划表Hibernate 从多对一/一对多映射获取数据,hibernate,spring-boot,jpa,one-to-many,many-to-one,Hibernate,Spring Boot,Jpa,One To Many,Many To One,我有两张桌子: 计划表 计划覆盖率表 我想使用plan_代码访问所有coverage_描述,并将其显示在我的jsp页面上 这是我的密码 Plan.java @Entity @Table(name="plan") public class Plan { /.... @OneToMany(targetEntity=PlanCoverage.class, mappedBy="plan",cascade=CascadeType.ALL, fetch = FetchType.LAZY
计划覆盖率表 我想使用plan_代码访问所有coverage_描述,并将其显示在我的jsp页面上 这是我的密码 Plan.java
@Entity
@Table(name="plan")
public class Plan {
/....
@OneToMany(targetEntity=PlanCoverage.class, mappedBy="plan",cascade=CascadeType.ALL, fetch = FetchType.LAZY)
private List<PlanCoverage> planCoverage;
public List<PlanCoverage> getPlanCoverage() {
return planCoverage;
}
public void setPlanCoverage(List<PlanCoverage> planCoverage) {
this.planCoverage = planCoverage;
}
private String coverage_description;
public String getCoverage_description() {
return coverage_description;
}
}
非常感谢你的帮助 您可以使用join fetch从两个表中选择数据。Plan table与Plan Coverage实体具有@OneToMany关系。因此,您可以编写类似的join fetch hql查询
String hql = "select p from Plan p join fetch p.planCoverage where p.planCode=:code";
List<Plan> plans = this.sf.getCurrentSession().createQuery(hql).setParameter("code",plan_code).list();
String hql=“从计划p连接获取p.planCoverage中选择p,其中p.planCode=:code”;
列表计划=this.sf.getCurrentSession().createQuery(hql).setParameter(“代码”,计划代码).List();
应用foreach循环并逐个获取planCoverage实体converage_描述。您可以使用join fetch从两个表中选择数据。您好!对不起,我还没有使用这个的经验。我应该把它放在我的Plan.java类中吗?coverage_description是哪个表的一列?Plan coverage table“this.sf”中的sf是什么?hibernate sessionfactory获取hibernate会话。
String hql = "select p from Plan p join fetch p.planCoverage where p.planCode=:code";
List<Plan> plans = this.sf.getCurrentSession().createQuery(hql).setParameter("code",plan_code).list();