3、>constrained="true"指定了将person表的主键设置为id_card表的外键,这样就建立起了两个表的关联,若不指定,两个表就是孤立的,互相没有关系。建立表的ddl语句如下:[sql]viewplaincopyprint?1.CREATE TABLE `id_card` ( 2. `id` int(11) NOT NULL AUTO_INCREMENT, 3. `No` varchar(255)
4、 DEFAULT NULL, 4. PRIMARY KEY (`id`), 5. KEY `FK627C1FB4AEED3EC` (`id`), 6. CONSTRAINT `FK627C1FB4AEED3EC` FOREIGN KEY (`id`) REFERENCES `person` (`id`) 7.) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=gbk CREATETABLE`id_card`(`id`int(11)NOTNULLAUTO_INCREMENT,`No`varchar(2
5、55)DEFAULTNULL,PRIMARYKEY(`id`),KEY`FK627C1FB4AEED3EC`(`id`),CONSTRAINT`FK627C1FB4AEED3EC`FOREIGNKEY(`id`)REFERENCES`person`(`id`))ENGINE=InnoDBAUTO_INCREMENT=2DEFAULTCHARSET=gbk在Person类的映射文件中可以不指定one-to-one标签,但那样建立起来的是单向的映射关系,即从id_card表可以映射到person表,但是反之就不行。这在通过person表查询id_card表时,不能
6、查询。如果要让person关联到id_card那么就要在Person类的映射文件中,也配置一下one-to-one标签了。2、多对一映射:建立两个表的映射的关系,都是通过建立外键来关联的,多对一也不例外,例如员工和部门的关系属于多对一的关系,多个员工属于同一个部门,所以在部门类中要有一个员工的集合属性。要实现双向映射的话,还必须在员工类中有部门的属性。如果单单建立两个表之间的关联,也像一对一一样,只需要在一个映射文件中配置就可以了,但是,多对一的映射文件的配置不像一对一那样简单,相对复杂的是在“一”这个角色,不是只使用一个就可以了的,
7、看下面这个配置“一”角色的例子:[html]viewplaincopyprint?1.部门类的映射文件: 2. 3. 4. 5. 6. 7. 8. 9. 8、>