Hibernate / JPA OneToMany应该双方都更新吗?

时间:2016-12-19 07:52:09

标签: java hibernate jpa 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);

删除时的外观如何?

1 个答案:

答案 0 :(得分:1)

好吧,使用mappedBy,你告诉Hibernate关系是由另一方维护的,一个叫做咨询类的处理。所以首先你必须得到咨询实例,然后设置治疗,最后坚持咨询实例。它将更新DB中的所有引用作为完整性约束(主键/外键对)。所以这里的咨询表将有一个treatmentId外键列,指向Treatment表的ID列(主键)。

示例代码是,

Consultation consultation = new Consultation();
// This maintains the relationship.
consultation.setTreatment(treatment);
someDaoRepository.save(consultation);

希望这会有所帮助,Happy Coding!