Hibernate 第十讲 表关联关系(四)双向一对一主键关联
来源:互联网 发布:北京金贵软件 编辑:程序博客网 时间:2024/06/06 01:07
一:Annotation配置方式
package com.darren.relation.model;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;import javax.persistence.OneToOne;import javax.persistence.PrimaryKeyJoinColumn;@Entitypublic class Wife { private int id; private String name; private Husband husband; @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 @PrimaryKeyJoinColumn//表示用对方的主键来关联,对方为Wife是相对于Husband来说的 public Husband getHusband() { return husband; } public void setHusband(Husband husband) { this.husband = husband; }}
package com.darren.relation.model;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;import javax.persistence.JoinColumn;import javax.persistence.OneToOne;@Entitypublic class Husband { private int id; private String name; private Wife wife; @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="wife_id_id") public Wife getWife() { return wife; } public void setWife(Wife wife) { this.wife = wife; }}
运行结果:
create table Husband ( id integer not null auto_increment, name varchar(255), wife_id_id integer, primary key (id) )21:02:52,671 DEBUG SchemaExport:377 - create table Wife ( id integer not null auto_increment, name varchar(255), primary key (id) )21:02:52,718 DEBUG SchemaExport:377 - alter table Husband add index FKAEEA401B6C114D9E (wife_id_id), add constraint FKAEEA401B6C114D9E foreign key (wife_id_id) references Wife (id)
二:Xml配置方式
package com.darren.relation.model;public class WifeXml { private int id; private String name; private HusbandXml husbandXml; 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 HusbandXml getHusbandXml() { return husbandXml; } public void setHusbandXml(HusbandXml husbandXml) { this.husbandXml = husbandXml; }}
package com.darren.relation.model;public class HusbandXml { private int id; private String name; private WifeXml wifeXml; 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 WifeXml getWifeXml() { return wifeXml; } public void setWifeXml(WifeXml wifeXml) { this.wifeXml = wifeXml; }}
<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><hibernate-mapping package="com.darren.relation.model"> <class name="WifeXml" table="wife_xml"> <id name="id" column="id"> <!--主键生成策略,自动增长 --> <generator class="native"/> </id> <property name="name"></property> <!-- husbandXml表示WifeXml里的属性husbandXml --> <!-- wifeXml表示被 HusbandXml类里的wifeXml属性映射--> <one-to-one name="husbandXml" property-ref="wifeXml"></one-to-one> </class></hibernate-mapping>
<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><hibernate-mapping package="com.darren.relation.model"> <class name="HusbandXml" table="husband_xml"> <id name="id" column="id"> <!--此时的主键要靠wifeXml的主键生成,即即做主键又做外键 --> <generator class="foreign"><!--此举表示要考HusbandXml类里的属性wifeXml去生成主键 --><param name="property">wifeXml</param> </generator> </id> <property name="name"></property> <!-- wifeXml表示HusbandXml类中的wifeXml对象 --> <!-- wife_id表示HusbandXml生成的表中的外键名 --> <!-- unique="true"表示是一对一关系 --> <many-to-one name="wifeXml" column="wife_id" unique="true"></many-to-one> </class></hibernate-mapping>
运行结果:
create table husband_xml ( id integer not null, name varchar(255), wife_id integer unique, primary key (id) )21:17:17,531 DEBUG SchemaExport:377 - create table wife_xml ( id integer not null auto_increment, name varchar(255), primary key (id) )21:17:17,562 DEBUG SchemaExport:377 - alter table husband_xml add index FK4E0A121393F8EC53 (wife_id), add constraint FK4E0A121393F8EC53 foreign key (wife_id) references wife_xml (id)
- Hibernate 第十讲 表关联关系(四)双向一对一主键关联
- Hibernate 第十讲 表关联关系(三)单向项一对一主键关联
- Hibernate 第十讲 表关联关系(五)一对一联合主键关联
- Hibernate 第十讲 表关联关系(二)双向项一对一外键关联
- Hibernate 第十讲 表关联关系(一)单项一对一外键关联
- Hibernate 一对一主键双向关联
- Hibernate 一对一主键双向关联
- Hibernate 一对一主键双向关联
- Hibernate一对一主键双向关联
- hibernate一对一主键双向关联
- hibernate一对一主键双向关联
- Hibernate:一对一双向主键关联
- Hibernate 一对一主键双向关联
- Hibernate 一对一主键双向关联
- Hibernate关联之一对一主键双向关联
- Hibernate关系映射(4)_一对一双向主键关联
- hibernate映射关系之一对一双向主键关联
- Hibernate实体关系映射:双向主键一对一关联
- OpenGL在MFC中的实现
- openstack和tempest开发部署环境
- Understanding the Global Signals for Simulation
- Object类
- 烟台大学CSDN俱乐部参加2012移动开发者大会见闻
- Hibernate 第十讲 表关联关系(四)双向一对一主键关联
- 最全的Android开发开发资料
- 2012-CSDN全国高校巡讲——海天站
- 元数据
- ubuntu下tinyos 安装配置 两种方法
- chapter 6.6: UMDF 设备对象的创建和初始化
- Vector中add和addelement的区别
- 烟台大学CSDN俱乐部举办新浪微博(SAE云端开发)专题讲座
- 控制输入发窗口