JPA注释中的inverse = true

时间:2011-02-01 16:39:22

标签: hibernate jpa inverse hibernate-onetomany

在我的应用程序中,我使用JPA 2.0和Hibernate作为持久性提供程序。我在两个实体之间存在一对多的关系(使用@JoinColumn而不是@JoinTable)。我想知道如何在JPA注释中指定inverse=true(在hbm.xml中指定)以反转关系所有者。

谢谢。

3 个答案:

答案 0 :(得分:43)

我找到了答案。 @OneToMany注释的mappedBy属性在xml文件中的行为与inverse = true相同。

答案 1 :(得分:3)

属性mappedBy表示此方面的实体是关系的倒数,而所有者位于另一个实体中。其他实体将具有@JoinColumn注释和@ManyToOne关系。因此我认为inverse = true与@ManyToOne注释相同。

此外,inverse =“true”表示这是处理关系的关系所有者。

答案 2 :(得分:0)

通过使用 @OneToMany @ManyToMany mappedBy 属性,我们可以在注释方面启用inverse =“ true”。 例如具有一对多关系的分支机构和员工

@Entity
@Table(name = "branch")
public class Branch implements Serializable {
    @Id
    @Column(name = "branch_no")
    @GeneratedValue(strategy = GenerationType.AUTO)
    protected int branchNo;
    @Column(name = "branch_name")
    protected String branchName;
    @OneToMany(mappedBy = "branch") // this association is mapped by branch attribute of Staff, so ignore this association
    protected Set<Staff> staffSet;
    
    // setters and getters
}
@Entity
@Table(name = "staff")
public class Staff implements Serializable {
    @Id
    @Column(name = "staff_no")
    @GeneratedValue(strategy = GenerationType.AUTO)
    protected int staffNo;
    @Column(name = "full_name")
    protected String fullName;
    @ManyToOne
    @JoinColumn(name = "branch_no", nullable = true)
    protected Branch branch;

    // setters and getters
}