Hibernate 关联映射之一对一
Hibernate的关联映射包括:
一对一(Persion - IDCard)
一对多(Department - Employee)
多对一(Employee - Department)
多对多(Teacher - Student)
组件映射(User - Name)
集合映射(Set、List、Map)
inverse和cascade(Employee - Department)
?
本文以一对一为例:
一个人对应一个身份证(Persion- IdCard)
(1) 基于主键的one-to-one(Persion的配置文件)
从对象IdCard使用了和主对象Person相同的主键,IdCard的主键在此即充当了主键又充当的外键。
<id name="id">
??? <generator? ?constrained="true">?
实体类:Persion.java 和 IdCard.java
Hibernate配置文件:hibernate.cfg.xml
IdCard.hbm.xml的配置文件:
<many-to-one? name="person"? column="person_id"? unique="true"? not-null="true"/>
?表结构:
CREATE TABLE `person` ( `id` int(11) NOT NULL auto_increment, `name` varchar(255) default NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1CREATE TABLE `id_card` ( `id` int(11) NOT NULL auto_increment, `idNo` varchar(255) default NULL, `person_id` int(11) default NULL, PRIMARY KEY (`id`), UNIQUE KEY `person_id` (`person_id`), KEY `FK627C1FB4C22976D1` (`person_id`), CONSTRAINT `FK627C1FB4C22976D1` FOREIGN KEY (`person_id`) REFERENCES `person` (`id`)) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1?
?
?
?