单向一对一联系关系
单向一对一关联
Annotation方法
Tables structure
'CREATE TABLE `address` (
`addressID` int(11) NOT NULL,
`addressName` varchar(45) NOT NULL,
PRIMARY KEY (`addressID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8'
'CREATE TABLE `person` (
`id` int(11) NOT NULL,
`name` varchar(45) NOT NULL,
`addressID` varchar(45) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8'
Person类
package hibernate.entities; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.OneToOne; @Entity public class Person { private int id; private String name; private Address address; @Id @GeneratedValue public 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; } @OneToOne @JoinColumn(name="addressID") public Address getAddress() { return address; } public void setAddress(Address address) { this.address = address; }
Address类
package hibernate.entities; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; @Entity public class Address { private int addressID; private String addressName; @Id @GeneratedValue public int getAddressID() { return addressID; } public void setAddressID(int addressID) { this.addressID = addressID; } public String getAddressName() { return addressName; } public void setAddressName(String addressName) { this.addressName = addressName; } }
XML配置方法
husband表
'CREATE TABLE `husband` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(45) NOT NULL, `wifeID` int(11) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `id_UNIQUE` (`id`), KEY `FK_7hkddxc8rvd25jlebv327ewj8` (`wifeID`), CONSTRAINT `FK_7hkddxc8rvd25jlebv327ewj8` FOREIGN KEY (`wifeID`) REFERENCES `wife` (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8'
wife表
'CREATE TABLE `wife` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8'
Husband类
package hibernate.entities; public class Husband { private int id; private String name; private Wife wife; public 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; } public Wife getWife() { return wife; } public void setWife(Wife wife) { this.wife = wife; } }
Wife类
package hibernate.entities; public class Wife { private int id; private String name; public 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; } }
Husband.hbm.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 package="hibernate.entities"> <class name="Husband" table="husband"> <id name="id" column="id"> <generator class="native"></generator> </id> <property name="name"></property> <many-to-one name="wife" column="wifeID" unique="true"></many-to-one> </class> </hibernate-mapping>
Wife.hbm.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 package="hibernate.entities"> <class name="Wife" table="wife"> <id name="id" column="id"> <generator class="native"></generator> </id> <property name="name" column="name"/> </class> </hibernate-mapping>