当前位置:首页 > 开发 > 编程语言 > 编程 > 正文

JoinColumn VS mappedBy

发表于: 2013-05-16   作者:darrenzhu   来源:转载   浏览次数:
摘要: What is the difference between: @Entity public class Company {     @OneToMany(cascade = CascadeType.ALL , fetch = FetchType.LAZY)     @JoinColumn(name = "com
What is the difference between:

@Entity
public class Company {

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

and

@Entity
    public class Company {

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


Answer:
The annotation @JoinColumn indicates that this entity is the owner of the relationship (that is: the corresponding table has a column with a foreign key to the referenced table), whereas the attribute mappedBy indicates that the entity in this side is the inverse of the relationship, and the owner resides in the "other" entity.

In particular, for the code in the question the correct annotations would look like this:

@Entity
public class Company {
    @OneToMany(fetch = FetchType.LAZY, mappedBy = "company")
    private List<Branch> branches;
}

@Entity
public class Branch {
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "companyId")
    private Company company;
}


reference URL: http://stackoverflow.com/questions/11938253/jpa-joincolumn-vs-mappedby

对于mappedBy复习:
a) 只有OneToOne,OneToMany,ManyToMany上才有mappedBy属性,ManyToOne不存在该属性;
b) mappedBy标签一定是定义在the owned side(被拥有方的),他指向the owning side(拥有方);
c) mappedBy的含义,应该理解为,拥有方能够自动维护 跟被拥有方的关系;


   当然,如果从被拥有方,通过手工强行来维护拥有方的关系也是可以做到的。
d) mappedBy跟JoinColumn/JoinTable总是处于互斥的一方,可以理解为正是由于拥有方的关联被拥有方的字段存在,拥有方才拥有了被 拥有方。mappedBy这方定义的JoinColumn/JoinTable总是失效的,不会建立对应的字段或者表

JoinColumn VS mappedBy

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
本文列出几个“EJB 学习阶段总结:JBoss下发布一个Toy企业应用”开发测试过程中遇到的几个问题。 1.
说是使用详解,其实是我自己做了一些简单的试验.如有说错,请指正. Annotation方式的MappedBy其实就是
 有时在项目开发过程中,某个项目不直接依赖于另外一个项目,也就是说在编码上不需要使用另外一个
前言:前段时间给部门做了一次技术培训,今日有空就整理一下写到博客里,希望更多人能够了解、更希
Productivity Power Tools 是微软官方推出的 Visual Studio 扩展,被用以提高开发人员生产率。它的
1.工具-选项-字体和颜色:在项背景点击自定义-色调85 饱和度123 亮度205, 字体则是选择Calibri,个
VS项目整体重命名工具,不再为重命名项目,命名空间,文件夹,相互引用关系而烦恼 VS项目整体重命名
1、可以通过 视图---》属性管理器 来直接配置opencv,一键搞定 2、按住shift键不放,然后移动方向键
vultr官方网站:www.vultr.com digitalocean官方网站:www.digitalocean.com linode官方网站:www.l
来源:《Head First HTML与CSS》 照片和复杂图像使用 JPEG 单色图像、logo 和几何图形使用 PNG 或 G
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号