开发者

inverse=true in JPA annotations

In my application I use JPA 2.0 with Hibernate as the persistence provider. I have a one-to-many relationship between two entities (using a @JoinColu开发者_如何转开发mn and not @JoinTable). I wanted to know how could I specify inverse=true (as specified in hbm.xml) in JPA annotations to reverse the relationship owner.

Thank you.


I found an answer to this. The mappedBy attribute of @OneToMany annotation behaves the same as inverse = true in the xml file.


The attribute mappedBy indicates that the entity in this side is the inverse of the relationship, and the owner resides in the other entity. Other entity will be having @JoinColumn annotaion and @ManyToOne relationship. Hence I think inverse = true is same as @ManyToOne annotation.

Also inverse=”true” mean this is the relationship owner to handle the relationship.


by using mappedBy attribute of @OneToMany or @ManyToMany we can enable inverse="true" in terms of annotation. For example Branch and Staff having one-to-many relationship

@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
}
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜