Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate 从多对一/一对多映射获取数据_Hibernate_Spring Boot_Jpa_One To Many_Many To One - Fatal编程技术网

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