读书人

Hibernate:一对一双向外键联系关系

发布时间: 2012-11-10 10:48:50 作者: rapoo

Hibernate:一对一双向外键关联
一 环境:W7+Eclipse3.6+JDK1.6+MySQL
二 所用Hibernate版本:hibernate-distribution-3.6.0.Final
三 具体代码
1 Annotations版本

主导对象

import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;import javax.persistence.JoinColumn;import javax.persistence.OneToOne;@Entitypublic class A {private int id;private String name;private B b;@Id@GeneratedValuepublic int getId() {return id;}public String getName() {return name;}@OneToOne@JoinColumn(name="bid")        //指定关联列名public B getB() {return b;}public void setId(int id) {this.id = id;}public void setName(String name) {this.name = name;}public void setB(B b) {this.b = b;}}

被参考对象
import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;import javax.persistence.JoinColumn;import javax.persistence.OneToOne;@Entitypublic class B{private int id;private String name;private A a;        //参考了A对象中的属性B的名字:b,只要是双向关联mappedBy必设       @OneToOne(mappedBy="b")        public A getA() {              return a;           }              public void setA(A a) {             this.a = a;           }            @Id@GeneratedValuepublic int getId() {return id;}public String getName() {return name;}public void setId(int id) {this.id = id;}public void setName(String name) {this.name = name;}}


XML版本
<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"><hibernate-mapping > <class name="org.hibernate.model.A">        <id name="id" column="id">            <generator column="bid"  unique="true"/>    </class></hibernate-mapping>


<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"><hibernate-mapping > <class name="org.hibernate.model.B">        <id name="id" column="id">            <generator property-ref="b"></one-to-one>    </class></hibernate-mapping>

SQL
create table A (           id integer not null auto_increment,           name varchar(255),           bId integer unique,           primary key (id)   )     create table B (           id integer not null auto_increment,           name varchar(255),           primary key (id)   )     alter table A            add index FK418DB36D94 (bId),            add constraint FK418DB36D94            foreign key (bId)            references B (id)   

读书人网 >软件架构设计

热点推荐