服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

hibernate的一对一关系(转)


  一对一关系的维护有两种,分为主键关联和唯一外键关联

一对一关系的维护有两种,分为主键关联和唯一外键关联

主键关联:(双向)
(主控方)

person.java
person {

private string username;
//对被控方的引用
private address address;

public string getusername() {
return username;
}

public void setusername(string username) {
this.username = username;
}

public address getaddress() {
return address;
}

public void setaddress(address address) {
this.address= address;
}


}

(被动方)
address.java
address{

private string addressname;
//对主控方的引用
private person person;

public string getaddressname() {
return addressname;
}

public void setaddressname(string addressname) {
this.addressname= addressname;
}

public person getperson() {
return person;
}

public void setperson(person person) {
this.person= person;
}

public string tostring() {
return new tostringbuilder(this).
append("addressname", addressname).
tostring();
}


public boolean equals(object o) {
if ( !(o instanceof address) {
return false;
}
address rhs = (address) o;
return new equalsbuilder()
.appendsuper(super.equals(o))
.append(this.addressname, rhs.getaddressname())
.isequals();
}

public int hashcode() {
return new hashcodebuilder(17, 37).
append(addressname).
tohashcode();
}

}
mapping 文件

<class name="person" table="person">
<id name="id" type="long" column="id">
<generator class="native"/>
</id>
<property name="username" column="username" type="string"/>
<one-to-one
name="address"
class="address"
cascade="all"
constrained="false"
/>
</class>

<class name="address" table="address" >
<id name="id" column="id">
<generator class="foreign">
<param name="property">person</param>
</generator>
</id>
<one-to-one name="person" class="person" constrained="true"/>
<property name="addressname" column="addressname" type="string"/>
</class>

扫描关注微信公众号