hibernate如何更新交叉引用表

时间:2015-05-07 03:33:04

标签: hibernate

我是hibernate的新手。我有一张病人桌,访问桌和医生桌。

患者1 ---- *访问(患者访问是一对多)

访问1 ---- *医生(访问医生是一对多)

我的域代码是从现有数据库进行逆向工程:

@OneToMany(fetch = FetchType.LAZY, mappedBy = "patient")
    public Set<Visit> getVisits()
    {
        return this.visits;
    }

@OneToMany(fetch = FetchType.LAZY, mappedBy = "visit")
    public Set<Doctor> getDoctors()
    {
        return this.doctors;
    }

在我的单元测试代码中,我创建了一个没有任何访问的患者并将其保存到数据库中。关闭会话。

然后我开始一个新的会话来加载患者,我创建了一个访问和一个医生。我将博士添加到访问中并将访问添加到患者。然后我调用session.saveOrUpdate()来更新患者。我提交了事务并在saveOrUpdate()调用后关闭了会话。

但我无法在数据库表中找到Visit和Doctor数据。

我的问题是如何通过访问和医生信息保存/更新患者?

在我用他们更新病人之前,我是否必须单独保存访问和医生数据?

2 个答案:

答案 0 :(得分:0)

如果cascaleAll适合你,你能试试吗? 例如:

 @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)

答案 1 :(得分:0)

首先,现在大多数使用单元测试的java项目原型配置为回滚任何更改,因此您不会在物理表中看到任何更改 - 请检查是否是这种情况你的项目。

如果没有 - 您可以尝试手动创建和保存PatientDoctor个对象并刷新会话(不提交)。

刷新会话后,尝试创建Visit对象并提交。