`

hibernate 注解@joinColumn,@mappedBy详解

 
阅读更多

【转】http://xiaoruanjian.iteye.com/blog/1094253

class Card{

Person getPerson(){}

mappedBy 单向关系不需要设置该属性,双向关系必须设置,避免双方都建立外键字段

把关系的维护交给多方对象的属性去维护关系

a) 只有OneToOne,OneToMany,ManyToMany上才有mappedBy属性,ManyToOne不存在该属性;
b) mappedBy标签一定是定义在the owned side(被拥有方的),他指向the owning side(拥有方);
c) 关系的拥有方负责关系的维护,在拥有方建立外键。所以用到@JoinColumn
d)mappedBy跟JoinColumn/JoinTable总是处于互斥的一方
cascade 设定级联关系,这种关系是递归调用

fetch 预加载策略和@Basic差不多FetchType.LAZY,FetchType.EAGER

比如Card(身份证)中的person(人)optional为false意味有身份证就必须有人对应,但是在实体Person中Card的optional为true意味有人不一定要有身份证。

name该外键的字段名,referencedColumnName外键对应主表的字段

所以要在person端的关联项设置外键@JoinColumn

双向多对多(实际开发中多对多通常是双向的)

name="teacher_student",

inverseJoinColumns={@JoinColumn(name="student_id",referencedColumnName="sid")}
joinColumns写的都是本表在中间表的外键名称,inverseJoinColumns写的是另一个表在中间表的外键名称。



单向多对多 更加简单略

 

分享到:
评论

相关推荐

    Hibernate注解 关联关系映射注解.docx

    mappedBy属性表示当前注解的关联属性放弃了维护权,即使执行了set方法将值设置入,其也不会写入到DB中。 也正因为放弃了维护权,与DB无关了,所以设置了mappedBy属性的注解,再设置cascade也就无意义了。 一个是使被...

    Hibernate注解

    * 从表:@OneToOne(mappedBy = "主表类中的从表属性")//例主表User中有一个从表属性是Heart类型的heart,这里就填heart * public 主表类 get主表类(){return 主表对象} * @ManyToOne 设置多对一关联 * 方法一 * @...

    Hibernate_Annotation关联映射

    对于一对多的双向映射,如果要一对多这一端维护关联关系,你需要删除mappedBy元素并将多对一这端的@JoinColoumn的insertable和updatabel设置为false。这种方案不会得到什么明显的优化,而且还会增加一些附加的UPDATE...

    Hibernate注释大全收藏

    Hibernate 可以对类的属性或者方法进行注解。属性对应field类别,方法的 getXxx()对应property类别。 定义表 通过 @Table 为实体Bean指定对应数据库表,目录和schema的名字。 @Entity @Table(name="tbl_sky") ...

    hibernate_UD

    请测试代码并查看测试,我建议您@JoinColumn批注,并将mappedBy放在报告的另一侧。 也可以使用@JoinTable批注完成此@JoinTable 。 @JoinTable批注指示关系的所有者-相应的表包含所引用表的外键列。 @Entity ...

    BOS 技术整理

    @OneToMany(mappedBy 相当于 inverse ) @ManyToOne 结合 @JoinColumn 添加一列外键 @ManyToMany 一方写 mappedBy 放弃外键维护、另一方 @JoinTable 维护中间表 收派标准修添加能实现 html 请求 后台...

    JPA 标注 JPA标签手册

    o @JoinColumn o @JoinColumns o @JoinTable • L o @Lob • M o @ManyToMany o @ManyToOne o @MapKey o @MappedSuperclass • N o @NamedNativeQueries o @NamedNativeQuery o @NamedQueries o @NamedQuery • O o ...

    JPA例子(里面有一对一,一对多的例子)

    @JoinColumn(name = "personid", unique = false, nullable = true, insertable = true, updatable = true) public Person getPerson() { return this.person; } public void setPerson(Person person) { ...

    JPA帮助文档

    奉上完整的JPA注解帮助文档

    Java_EE_Udemy39:级联和传播持久性和删除操作

    Java_EE_Udemy39 ... @JoinColumn(name= "airplane_fk") private Airplane airplaneDetail; 现在,这可以使排期列表自动更新。 这也意味着,如果将飞行员添加到航班中,并且航班被删除,则飞行员现在也将被删除。

    Java EE常用框架.xmind

    1,@JoinColumn注释是保存表与表之间关系的字段 2,如果不设置name,默认name = 关联表的名称+”-“+关联表主键的字段名 需要注意的问题: 注解写在get方法上 如果写在属性上可能会出现: Could not ...

    javax.persistence.jar

    javax.persistence.JoinColumn.class javax.persistence.JoinColumns.class javax.persistence.JoinTable.class javax.persistence.Lob.class javax.persistence.LockModeType.class javax.persistence....

    symbok-bundle:Symfony注释包

    Symbok注释包 Symfony的运行时代码生成器包。 检测使用Symbok批注的类,生成相关方法并加载生成的类,而不是原始类。 将生成的类存储在Symfony缓存中,以便Symbok只...Symbok还解析了诸如Column , JoinColumn , O

    Symfony2联合查询实现方法

    本文实例讲述了Symfony2联合查询实现方法。分享给大家供大家参考,具体如下: 1.yml文件 Acme\MspadminBundle\... joinColumn: name: channel_id referencedColumnName: channel_id User: targetEntity: MspU

Global site tag (gtag.js) - Google Analytics