为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕的地10843 2019-06-19 10:17:20
当使用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;     ...}
查看完整描述

3 回答

?
SMILET

TA贡献1796条经验 获得超4个赞

注释@JoinColumn指示此实体是业主的关系(即:对应的表有一个列,其中包含引用表的外键),而属性则是mappedBy指示此侧的实体与关系相反,所有者驻留在“其他”实体中。这也意味着您可以从类中访问另一个表,类注释为“mempdBy”(完全双向关系)。

特别是,对于问题中的代码,正确的注释应该如下所示:

@Entitypublic class Company {
    @OneToMany(fetch = FetchType.LAZY, mappedBy = "company")
    private List<Branch> branches;}@Entitypublic class Branch {
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "companyId")
    private Company company;}


查看完整回答
反对 回复 2019-06-19
?
慕桂英4014372

TA贡献1871条经验 获得超13个赞

正如我在这篇文章,如果您使用@OneToMany注释@JoinColumn,那么你就有了单向关联。

如果您使用@OneToMany带着mappedBy属性集,您有一个双向关联,这意味着您需要一个@ManyToOne儿童侧协会mappedBy参考资料。

这个单向@OneToMany协会表现不太好所以你应该避免。

您最好使用双向@OneToMany哪个更有效率.


查看完整回答
反对 回复 2019-06-19
  • 3 回答
  • 0 关注
  • 2442 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号