【问题标题】:Fetching data from many-to-one/one-to-many mapping从多对一/一对多映射中获取数据
【发布时间】:2019-02-27 11:58:46
【问题描述】:

我有这两张桌子:

计划表

计划覆盖表

我想使用plan_code 访问所有coverage_description 并将其显示在我的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;
    }

}

PlanCoverage.java

@Entity
@Table(name="plan_coverage")
public class PlanCoverage {

    @ManyToOne()
    @JoinColumn(name="plan_code", referencedColumnName = "plan_code",insertable=false, updatable=false)
    private Plan plan;

    public Plan getPlan() {
        return plan;
    }

    public void setPlan(Plan plan) {
        this.plan = plan;
    }

}

非常感谢您的帮助!!!

【问题讨论】:

  • 您可以使用join fetch从两个表中选择数据。

标签: hibernate spring-boot jpa one-to-many many-to-one


【解决方案1】:

您可以使用join fetch从两个表中选择数据。Plan表与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();

应用foreach循环,一一获取planCoverage实体converage_description。

【讨论】:

  • 您好!抱歉,我还没有使用此功能的经验。我应该把它放在我的 Plan.java 类中吗?
  • coverage_description 是哪个表的列?
  • 计划覆盖表
  • “this.sf”中的 sf 是什么?
  • hibernate sessionfactory 获取休眠会话。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-10
  • 2013-08-25
  • 1970-01-01
  • 2020-04-07
相关资源
最近更新 更多