一对一关系的维护有两种,分为主键关联和唯一外键关联一对一关系的维护有两种,分为主键关联和唯一外键关联主键关联:(双向)(主控方) Person.javaPerson { 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.javaAddress{ 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>