猿问

当使用JPA@OneToMany关联时@JoinColumn和MempdBy的区别是什么?

当使用JPA@OneToMany关联时@JoinColumn和MempdBy的区别是什么?

在以下方面有何区别:

@Entitypublic class Company {

    @OneToMany(cascade = CascadeType.ALL , fetch = FetchType.LAZY)
    @JoinColumn(name = "companyIdRef", referencedColumnName = "companyId")
    private List<Branch> branches;
    ...}

@Entitypublic class Company {

    @OneToMany(cascade = CascadeType.ALL , fetch = FetchType.LAZY, mappedBy = "companyIdRef")
    private List<Branch> branches;
    ...}


慕的地10843
浏览 2443回答 3
3回答

SMILET

注释@JoinColumn指示此实体是业主的关系(即:对应的表有一个列,其中包含引用表的外键),而属性则是mappedBy指示此侧的实体与关系相反,所有者驻留在“其他”实体中。这也意味着您可以从类中访问另一个表,类注释为“mempdBy”(完全双向关系)。特别是,对于问题中的代码,正确的注释应该如下所示:@Entitypublic&nbsp;class&nbsp;Company&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;@OneToMany(fetch&nbsp;=&nbsp;FetchType.LAZY,&nbsp;mappedBy&nbsp;=&nbsp;"company") &nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;List<Branch>&nbsp;branches;}@Entitypublic&nbsp;class&nbsp;Branch&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;@ManyToOne(fetch&nbsp;=&nbsp;FetchType.LAZY) &nbsp;&nbsp;&nbsp;&nbsp;@JoinColumn(name&nbsp;=&nbsp;"companyId") &nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;Company&nbsp;company;}

慕桂英4014372

正如我在这篇文章,如果您使用@OneToMany注释@JoinColumn,那么你就有了单向关联。如果您使用@OneToMany带着mappedBy属性集,您有一个双向关联,这意味着您需要一个@ManyToOne儿童侧协会mappedBy参考资料。这个单向@OneToMany协会表现不太好所以你应该避免。您最好使用双向@OneToMany哪个更有效率.
随时随地看视频慕课网APP

相关分类

Java
我要回答