第十章 基于Annotation的关系映射 一对一
来源:互联网 发布:玛雅软件的优缺点 编辑:程序博客网 时间:2024/06/05 16:33
如果下面部分内容有不明白的可以查找:
基于Annotation的关系映射 前期准备:http://blog.csdn.net/p_3er/article/details/9061911
基于映射文件共享主键方式实现一对一:http://blog.csdn.net/p_3er/article/details/9004419
基于映射文件唯一外键式实现一对一:http://blog.csdn.net/p_3er/article/details/9004471
1、共享主键方式:
Person:
@Entity@Table(name = "person", catalog = "hibernate")public class Person implements java.io.Serializable {private Integer id;private String name;private IdCard idCard;public Person() {}@Id@GeneratedValue@Column(name = "id", unique = true, nullable = false)public Integer getId() {return this.id;}public void setId(Integer id) {this.id = id;}@Column(name = "name", nullable = false, length = 45)public String getName() {return this.name;}public void setName(String name) {this.name = name;}@OneToOne(cascade = CascadeType.ALL)@PrimaryKeyJoinColumn // 这个注解只能写在主(生成ID)的一端,指向从表public IdCard getIdCard() {return idCard;}public void setIdCard(IdCard idCard) {this.idCard = idCard;}}
IdCard:
@Entity@Table(name = "id_card", catalog = "hibernate")public class IdCard implements java.io.Serializable {private Integer id;private Person person;private String cardNo;public IdCard() {}@Id@GenericGenerator(name = "abc", strategy = "foreign", parameters = { @Parameter(name = "property", value = "person") })@GeneratedValue(generator = "abc")@Column(name = "id", unique = true, nullable = false)/* 与映射文件相比较: <id name="id" type="java.lang.Integer"><column name="id" /><generator class="foreign"><param name="property">person</param></generator></id>*/public Integer getId() {return this.id;}public void setId(Integer id) {this.id = id;}@OneToOne(cascade = CascadeType.ALL)@JoinColumn(name = "id", unique = true, nullable = false, insertable = false, updatable = false)public Person getPerson() {return this.person;}public void setPerson(Person person) {this.person = person;}@Column(name = "card_no", nullable = false, length = 45)public String getCardNo() {return this.cardNo;}public void setCardNo(String cardNo) {this.cardNo = cardNo;}}
测试与使用和基于映射文件基本一样:http://blog.csdn.net/p_3er/article/details/9004419
2、唯一外键方式
Person:
@Entity@Table(name = "person", catalog = "hibernate")public class Person implements java.io.Serializable {private Integer id;private String name;private IdCard idCard;public Person() {}@Id@GeneratedValue@Column(name = "id", unique = true, nullable = false)public Integer getId() {return this.id;}public void setId(Integer id) {this.id = id;}@Column(name = "name", nullable = false, length = 45)public String getName() {return this.name;}public void setName(String name) {this.name = name;}@OneToOne(cascade = CascadeType.ALL,mappedBy="person") //<one-to-one name="idCard" property-ref="person"/> 与之前的映射文件比较 //当指定person中的mappedBy后,关系只能被idcard来主动维护public IdCard getIdCard() {return idCard;}public void setIdCard(IdCard idCard) {this.idCard = idCard;}}
IdCard:
@Entity@Table(name = "id_card", catalog = "hibernate")public class IdCard implements java.io.Serializable {private Integer id;private Person person;private String cardNo;public IdCard() {}@Id@GeneratedValue@Column(name = "id", unique = true, nullable = false)public Integer getId() {return this.id;}public void setId(Integer id) {this.id = id;}@OneToOne(cascade = CascadeType.ALL)@JoinColumn(name = "person_id", unique = true)/* 比较:<many-to-one name="person" column="person_id" unique="true" /> */public Person getPerson() {return this.person;}public void setPerson(Person person) {this.person = person;}@Column(name = "card_no", nullable = false, length = 45)public String getCardNo() {return this.cardNo;}public void setCardNo(String cardNo) {this.cardNo = cardNo;}}
- 第十章 基于Annotation的关系映射 一对一
- 第十章 基于Annotation的关系映射 前期准备
- 第十章 基于Annotation的关系映射 多对多
- 第十章 基于Annotation的关系映射 多对一与一对多
- Hibernate基于主键的一对一映射关系
- 基于外键映射的 一对一关系
- 基于主键映射的 一对一关系
- hibernate基于Annotation的一对一外键映射
- MyBatis框架基于Annotation注解的一对一关联映射
- Hibernate之基于主键映射的一对一关联关系
- hibernate实现一对一关系映射(基于主键)
- Hibernate学习——(五)基于Annotation的一对一外键映射
- Hibernate关联关系映射-----基于连接表的单向一对一映射
- Hibernate_映射_关联关系_一对一映射2_基于外键的方式
- Hibernate_映射_关联关系_一对一映射3_基于主键的方式
- Hibernate 基于注解的方式 实现的关系映射案例(一对一关系,一对多关系,多对多关系)
- Hibernate映射一对一的关联关系
- 第07章 ORM映射:基于主键的一对一
- 中国的手机号码格式化/分类工具
- 【菜鸟收藏:全方位掌握Excel的ROUNDUP函数设置】
- Nginx 源码学习 简单的数据类型
- winform编程
- 纹理总结
- 第十章 基于Annotation的关系映射 一对一
- 异步图片下载引擎(升级版——ExecutorService+handler)
- opencv环境搭建与helloworld
- Fiddler的基本介绍
- Ext JS 4百强应用:ComboBox是什么?怎么使用?--第2强
- Class<?>
- 【胜利的唯一的方法,那就是实力,永远不用怀疑】
- XenDesktop 连接数据库报错
- 异常处理