037:hibernate一对一双向外键关联(Annotation)

来源:互联网 发布:新西兰导航软件mate 编辑:程序博客网 时间:2024/05/10 01:25

1、首先husband和Wife之间应写成双向的。

即husband里面有private Wife wife;

            Wife里面有private Husband husband;

2、在wife里加上:

@onetoone(mappingBy="wife")

 这句话相当于告诉hibernate,wife和husband是一对一的关联,mappingBy="wife"告诉对方husband中的wife已经做了映射。


 

package com.bjsxt.hibernate;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;import javax.persistence.JoinColumn;import javax.persistence.OneToOne;@Entitypublic class Husband {private int id;private String name;private Wife wife;@Id@GeneratedValuepublic int getId() {return id;}public String getName() {return name;}@OneToOne@JoinColumn(name="wifeId")public Wife getWife() {return wife;}public void setId(int id) {this.id = id;}public void setName(String name) {this.name = name;}public void setWife(Wife wife) {this.wife = wife;}}

package com.bjsxt.hibernate;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;import javax.persistence.OneToOne;@Entitypublic class Wife {private int id;private String name;private Husband husband;@OneToOne(mappedBy="wife")public Husband getHusband() {return husband;}public void setHusband(Husband husband) {this.husband = husband;}@Id@GeneratedValuepublic int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}}


3、在hibernate.cfg.xml中:

                  <mapping class="com.bjsxt.hibernate.Husband"/><mapping class="com.bjsxt.hibernate.Wife"/>


 总结 :一对一双向外键关联

a)、Annotation:@onetoone(mappedBy)

规律:凡是双向关联,必设mappedBy
0 0