hibernate annotation 双向 one-to-one 注解 环境: Hibernate 3.3.1 Maven 3.0.4 MySQL 5.5.13 Myeclipse 8.6.1 建表语句: DROP TABLE IF EXISTS `t_card`; CREATE TABLE `t_card` ( `cardId` int(10) unsigned NOT NULL AUTO_INCREMENT, `cardNumber` char(18) NOT NULL, PRIMARY KEY (`cardId`) ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=gb2312; INSERT INTO `t_card` VALUES ('1', '440911199008011122' ); DROP TABLE IF EXISTS `t_person`; CREATE TABLE `t_person` ( `personId` int(10) unsigned NOT NULL AUTO_INCREMENT, `personName` varchar(15) NOT NULL, `cid` int(10) unsigned NOT NULL, PRIMARY KEY (`personId`) ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=gb2312; INSERT INTO `t_person` VALUES ('1', 'fancy', '1'); Person.java package com.fancy.po; import javax.persistence.CascadeType; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.OneToOne; import javax.persistence.Table; /** * ----------------------------------------- * @文件: Person.java * @作者: fancy * @邮箱: fancyzero@yeah.net * @时间: 2012-6-10 * @描述: 实体类 * ----------------------------------------- */ /** * @Entity 声明一个类为实体Bean * @Table(name = "xx")指定实体类映射的表,如果表名和实体类名一致,可以不指定 */ @Entity @Table(name = "t_person") public class Person { private Integer personId; private String personName; private Card card; /** * @Id 映射主键属性,这里采用uuid 的主键生成策略 * @GeneratedValue —— 注解声明了主键的生成策略。该注解有如下属性 * strategy 指定生成的策略,默认是 GenerationType. AUTO * GenerationType.AUTO 主键由程序控制 * GenerationType.TABLE 使用一个特定的数据库表格来保存主键 * GenerationType.IDENTITY 主键由数据库自动生成,主要是自动增长类型 * GenerationType.SEQUENCE ...