Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate 在双向关系中设置级联和获取的位置_Hibernate_Jpa_Hibernate Cascade - Fatal编程技术网

Hibernate 在双向关系中设置级联和获取的位置

Hibernate 在双向关系中设置级联和获取的位置,hibernate,jpa,hibernate-cascade,Hibernate,Jpa,Hibernate Cascade,在hibernate/JPA中的双向关系中,哪个实体或两者都是?是否指定提取模式和级联类型?例如: @Entity @Table(name="EMPLOYER") public Employer implements Serializable { @OneToMany(mappedBy="employer") private Set<Employee> employees; } @Entity @Table(name="EMPLOYEE") public Emp

在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中的级联非常困惑。我猜我可以将fetch模式同时设置为这两种模式,这将决定雇主如何获取员工集以及员工如何获取其雇主。我之所以做出这个假设,是因为@OneToMany和@ManyToOne已经有了默认的获取模式

我不清楚级联类型是如何工作的。这两种情况都会发生吗?这就决定了雇主和员工会得到什么?非常感谢您的帮助


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

您可以在关系的两侧定义一个获取模式。获取模式不依赖于关系映射。由于自动抓取是默认设置,因此应该只显式定义延迟抓取。请注意,延迟获取只是一个提示,因此提供者可以根据自己的需要自由地获取属性

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