我在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);
删除时的外观如何?
答案 0 :(得分:1)
好吧,使用mappedBy,你告诉Hibernate关系是由另一方维护的,一个叫做咨询类的处理。所以首先你必须得到咨询实例,然后设置治疗,最后坚持咨询实例。它将更新DB中的所有引用作为完整性约束(主键/外键对)。所以这里的咨询表将有一个treatmentId外键列,指向Treatment表的ID列(主键)。
示例代码是,
Consultation consultation = new Consultation();
// This maintains the relationship.
consultation.setTreatment(treatment);
someDaoRepository.save(consultation);
希望这会有所帮助,Happy Coding!