hibernate annotation 双向 one-to-one 注解

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

环境:

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=2DEFAULT CHARSET=gb2312; INSERT INTO `t_card` VALUES ('1', '440911************');

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=2DEFAULT 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@

* @时间: 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 根据底层数据库的序列来生成主键,条件是数据库支持序列 * generator 指定生成主键使用的生成器

*/

@Id

@GeneratedValue(strategy = GenerationType.AUTO)

public Integer getPersonId() {

return personId;

}

/**

* @OneToOne:一对一关联

* cascade:级联,它可以有有五个值可选,分别是:

* CascadeType.PERSIST:级联新建

* CascadeType.REMOVE : 级联删除

* CascadeType.REFRESH:级联刷新

* CascadeType.MERGE :级联更新

* CascadeType.ALL :以上全部四项

* @JoinColumn:主表外键字段

* cid:Person所映射的表中的一个字段

*/

@OneToOne(cascade = CascadeType.ALL)

@JoinColumn(name = "cid")

public Card getCard() {

return card;

}

public String getPersonName() {

return personName;

}

public void setPersonId(Integer personId) { this.personId = personId;

}

public void setPersonName(String personName) { this.personName = personName;

}

public void setCard(Card card) {

this.card = card;

}

}

Card.java

package com.fancy.po;

import javax.persistence.Entity;

import javax.persistence.GeneratedValue;

import javax.persistence.GenerationType;

import javax.persistence.Id;

import javax.persistence.OneToOne;

import javax.persistence.Table;

/**

* -----------------------------------------

* @文件: Card.java

* @作者: fancy

* @邮箱: fancyzero@

* @时间: 2012-6-10

* @描述: 实体类

* -----------------------------------------

*/

相关文档
最新文档