0

在 hibernate/JPA 中的双向关系上,您指定了哪个实体(或两者?)获取模式和级联类型?一个例子:

@Entity
@Table(name="EMPLOYER")
public Employer implements Serializable
{
     @OneToMany(mappedBy="employer")
     private Set<Employee> employees;
}

@Entity
@Table(name="EMPLOYEE")
public Employee implements Serializable
{
     @ManyToOne
     @JoinColumn(name="employer_id", referencedColumnName="id")
     private Employer employer;
}

我是否将获取模式和级联类型放在关系的所有者(Employee)上?还是我把它们放在反面(雇主)上?还是(可以?)我把它们都放在上面?我对 JPA/Hibernate 中的级联感到很困惑。我猜我可以在两者上都设置获取模式,这将决定雇主如何获取员工集以及员工如何获取他的雇主。我做出这个假设是因为 @OneToMany 和 @ManyToOne 已经有默认的获取模式。

我不清楚级联类型是如何工作的。这是否同时发生并决定了雇主的级联和雇员的级联?任何帮助深表感谢。

父/子关系以及级联如何修改它们对我来说是最令人困惑的部分。

4

1 回答 1

0

您可以在关系的两侧定义获取模式。获取模式不依赖于关系映射。由于渴望获取是默认设置,因此您应该只明确定义延迟获取。请注意,延迟获取只是一个提示,因此提供者可以自由地在它认为合适的时候急切地获取属性。

您不应该从多方面定义级联。JPA 规范未定义多方级联的语义。因此,提供者可以自由地实现它自己的语义,甚至抛出异常。因此,在您的情况下,只有实体的employees属性可以定义级联。Employer

于 2014-05-07T06:46:59.380 回答