不能坚持与Hibernate的OneToMany关系

时间:2018-02-04 11:02:30

标签: jpa ejb

我有以下实体类 Kunde ,它与 Verlauf

具有OneToMany关系
@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@JoinColumn(referencedColumnName = "_id", name = "_id_verlauf")
private List<Verlauf> verlauf = new ArrayList<Verlauf>();

我试图坚持一些Verlauf,但我得到了错误 无法添加或更新子行:外键约束失败

这就是我的表现方式:

  @EJB
  private KundeLadenLocal kunden;

    private void fuegeZahlZuKundenKontoHinzu() {
    try {


        Kunden k = loginBean.getAktuellerKunde();

        Verlauf verlauf = new Verlauf();
        verlauf.set_id_kunde(k.get_id());
        verlauf.setDatumDerAbfrage(new Date());
        verlauf.setSuchbegriff(suchfeld);

        kunden.VerlaufAnlegen(verlauf);

        k.getVerlauf().add(verlauf);

        kunden.kundeUpdate(k);

    } catch (Exception e) {
        e.printStackTrace();
    }

}

会话Bean:

@Override
public void VerlaufAnlegen(Verlauf verlauf) {
    em.persist(verlauf);

}

1 个答案:

答案 0 :(得分:0)

我看不到你完整的实体代码,但我看到的让我觉得你是以错误的方式使用jpa关系。尝试以我在下面发布的方式更改您的实体代码。另外一个改进是考虑在实体级别上使用entity graphs个急切加载的instad,并阅读有关java代码约定的内容。

Kunde

可以将Verlauf对象直接传递给verlauf.setKunde(kunde); ojbect:

<a href="http://somepage.com/somepage">Click me</a>