Hibernate/JPA的OneToMany关系双向更新吗?

4
我已经用以下代码在Hibernate ORM中定义了实体关系:

我已经用以下代码在Hibernate ORM中定义了实体关系:

@Entity
public class Treatment {
    @OneToMany(fetch = FetchType.EAGER, mappedBy="treatment")
    private List<Consultation> consultations;
    ...
}

@Entity
public class Consultation {
    @ManyToOne(fetch=FetchType.EAGER)
    @JoinColumn(name = "treatment_id")
    private Treatment treatment;
    ...
}

我的问题是,当我想建立联系时,如何更新治疗/咨询?只在一侧更新是否足够:
treatment.getConsultations().add(newCon);

我应该在两边都更新吗?
treatment.getConsultations().add(newCon);
newCon.setTreatment(treatment);

删除时它会呈现什么样子?


双向关系:为了实现双向关系,请返回已翻译的文本 - Neil Stockton
你确定吗?有一个mappedBy属性,表示有一侧是所有者。 - Whimusical
1个回答

1
使用mappedBy告诉Hibernate关系由Consultation类中的一个名为treatment的字段维护。因此,首先您需要获取咨询实例,然后设置treatment,最后持久化咨询实例。它将更新数据库中的所有引用作为完整性约束(主键/外键对)。因此,在这里,consultation表将具有指向Treatment表的ID列(主键)的treatmentId外键列。
示例代码如下:
Consultation consultation = new Consultation();
// This maintains the relationship.
consultation.setTreatment(treatment);
someDaoRepository.save(consultation);

希望这有所帮助,编程愉快!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接