`
shenyuc629
  • 浏览: 193620 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

hibernate的注解属性mappedBy详解

阅读更多
mappedBy:
1>只有OneToOne,OneToMany,ManyToMany上才有mappedBy属性,ManyToOne不存在该属性;
2>mappedBy标签一定是定义在被拥有方的,他指向拥有方;
3>mappedBy的含义,应该理解为,拥有方能够自动维护跟被拥有方的关系,当然,如果从被拥有方,通过手工强行来维护拥有方的关系也是可以做到的;
4>mappedBy跟joinColumn/JoinTable总是处于互斥的一方,可以理解为正是由于拥有方的关联被拥有方的字段存在,拥有方才拥有了被拥有方。mappedBy这方定义JoinColumn/JoinTable总是失效的,不会建立对应的字段或者表。

下面是一个例子:
   人跟身份证双向关联
   在Person里面定义的注解:
@OneToOne(cascade = CascadeTye.ALL,optional = true)
public IDCard getIdCard(){
   return idCard;
}


@OneToOne(cascade = CascadeType.ALL,mappedBy = "idCard",optional = false)
public Person getPerson(){
   return person;
}


多了一个mappedBy这个方法,他表示什么呢?它表示当前所在表和Person的关系是定义在Person里面的idCard这个成员上面的,他表示此表是一对一关系中的从表,也就是关系是在person表中维护的,这是最重要的。Person表是关系的维护者,有主导权,它有个外键指向IDCard。
我们也可以让主导权在IDCard上面,也就是让他产生一个指向Person的外键,这也是可以的,但是最好让Person来维护整个关系,这样更符合我们的思维。
我们也可以看到在Person里面的IDCard是注释optional=true,也就是说一个人是可以没有身份证的,但是一个身份证是不可以没有人的,所以在IDCard里面注释Person的时候,optional=false了,这样就可以防止一个空的身份证记录进数据库。
分享到:
评论
4 楼 炭烧鸳鸯奶茶 2017-11-09  
遇见那只猫 写道
哈艾薇儿 写道
时隔那么久了,就没人发现楼主说错了吗?

哪错了?

3 楼 炭烧鸳鸯奶茶 2017-11-09  

person表有了mapped后放弃维护权
2 楼 遇见那只猫 2017-09-29  
哈艾薇儿 写道
时隔那么久了,就没人发现楼主说错了吗?

哪错了?
1 楼 哈艾薇儿 2016-10-27  
时隔那么久了,就没人发现楼主说错了吗?

相关推荐

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

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

    Hibernate注解

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

    mappedBy属性:one2many

    NULL 博文链接:https://605113068.iteye.com/blog/1727088

    Hibernate注释大全收藏

    • 将组件类注解为 @Embeddable, 并将组件的属性注解为 @Id • 将组件的属性注解为 @EmbeddedId • 将类注解为 @IdClass,并将该实体中所有主键的属性都注解为 @Id @Entity @IdClass(FootballerPk.class) public ...

    Hibernate_Annotation关联映射

    被关联端不必也不能描述物理映射:只需要一个简单的mappedBy参数,该参数包含了主体端的属性名,这样就绑定了双方的关系。 默认值: 和其它许多批注一样,在多对多关联中很多值是自动生成,党双向多对多关联中没有...

    Hibernate注释

    一对多 @OneToMany 注解可定义一对多关联。一对多关联可以是双向的。 双向 规范中多对一端几乎总是双向关联中的主体(owner)端,而一对多的关联注解为 @OneToMany(mappedBy=)

    hibernate-search:Hibernate搜索:全文搜索域模型

    通过注释或编程API将实体属性到索引字段。 对数据库中的所有实体进行,以使用预先存在的数据初始化索引。 通过Hibernate ORM会话修改的实体进行,以始终使索引保持最新状态。 ,可轻松构建全文本搜索查询并以...

    BOS 技术整理

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

    Memory Mapped File Demo in WinCE

    利用Memory Mapped File实践A,B跨程序的数据交换

    mybatis中的sql解析.md

    上篇文章说过,mybatis在执行sql语句的时候,通过id获取configuration中mappedStatements的 MappedStatement对象,每个MappedStatement对象对应着增删改查语句,也就是我们配置文件中增删改查标签配置或是注解@...

    Delphi 修改内存保护属性.rar

    Delphi 修改内存保护属性,包括修改以下信息:基地址、分配地址、区域大孝所分配保护属性、访问的保护属性、内存状态、内存类型等。核心源代码如下:  VirtualQuery(Arrayptr, MemInfo, SizeOf...

    MemoryMappedFile 使用 共享内存循环读写

    MemoryMappedFile 使用 C# 内存中分配一大块地址. 前边分配一个用与共同配置用 后边N个结构体 for循环建 一般用到此问题,两本程序 一个读一个写 循环读写 ----2015/09/24 Lyndon 上海----

    hibernate_UD

    所有者是Book类,我们没有在所有者类中放置mappedBy (在这里我们犯了一个错误)作者实体类与book类相关-在这里,它必须是mappedBy并指向另一侧的集合,可以正常工作。 请测试代码并查看测试,我建议您@JoinColumn...

    Memory-Mapped Files for Qualcomm Brew

    Memory-Mapped Files for Qualcomm Brew By Ray Rischpater

    .NET4利用MemoryMappedFile实现跨进程多个可执行程序之间的通信

    基于.NET4.0的MemoryMappedFile实现共享内存通信 共享内存通信可以解决跨线程、跨进程、跨EXE之间通信的问题 对于需要传输图片等引用类数据,可以通过序列化和反序列化配合共享内存实现跨进程(跨EXE)通信 共享...

    MDB: A Memory-Mapped Database and Backend for OpenLDAP

    MDB: A Memory-Mapped Database and Backend for OpenLDAP

    Mapped File Class (4KB)

    Mapped File Class (4KB)

    IO端口和IO内存详解

    几乎每一种外设都是通过读写设备上的寄存器来进行...CPU对外设IO端口物理地址的编址方式有两种:一种是I/O映射方式(I/O-mapped),另一种是内存映射方式(Memory-mapped)。而具体采用哪一种则取决于CPU的体系结构。

    hibernate-inheritance-example

    Hibernate继承在本硬件中,您将练习不同的继承策略。 行动项目: - Fork the project. - Add required annotations in model classes. - Implement all methods in DAOs实施以下要求: 有课程:动物,猫和狗。 猫和...

    Port Mapped

    端口映射工具(附带源码)

Global site tag (gtag.js) - Google Analytics