一对一关系的维护有两种,分为主键关联和唯一外键关联
一对一关系的维护有两种,分为主键关联和唯一外键关联
主键关联:(双向)
(主控方)
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>
闽公网安备 35060202000074号