与上篇相对应,还是client和address是一对一的外键关联关系,address表中的主键ID与client表中的外键CLIENTADDRESSID构成一对一外键关联关系.

表结构和sql语句就不说了,看下外键双向关联和外键单向关联的不同点和注意项

双向关联:
   可以根据client得到address,也可以根据address得到client,双向关联时需要在client.hbm.xml中配置

<many-to-one unique=”true” name=”client_address” column=”CLIENTADRESSID” cascade=”all”></many-to-one>;

在address.hbm.xml中配置

<one-to-one name=”address_client” property-ref=”client_address”></one-to-one>,

property-ref的值应与<many-to-one>中的name属性的值对应,说明client对象是与address对象建立的关联关系.

单向关联:

只可以根据client得到address,单向关联时只需在client.hbm.xml中配置

<many-to-one unique=”true” name=”client_address” column=”CLIENTADDRESSID” cascade=”all”>

hibernate.cfg.xml

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC"-//Hibernate/Hibernate Configuration DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"><!-- Generated by MyEclipse Hibernate Tools.                   -->
<hibernate-configuration><session-factory><property name="dialect">org.hibernate.dialect.MySQLInnoDBDialect</property><property name="connection.url">jdbc:mysql://localhost:3306/onetoone</property><property name="connection.username">root</property><property name="connection.password">123456</property><property name="connection.driver_class">com.mysql.jdbc.Driver</property><!-- 显示sql语句 --><property name="hibernate.show_sql">true </property>  <property name="format_sql">true</property><!-- 让输出的sql语句格式化 --><mapping resource="com/hust/javabeans/Address.hbm.xml" /><mapping resource="com/hust/javabeans/Client.hbm.xml"  />
</session-factory></hibernate-configuration>

Client.hbm.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
<hibernate-mapping><class name="com.hust.javabeans.Client" table="client"><id name="id" column="ID"  type="integer"><generator class="identity"></generator></id><property name="clientname" column="CLIENTNAME" type="string"></property><property name="phone" column="PHONE" type="string"></property><property name="email" column="EMAIL" type="string"></property><!-- 映射Client和Address的一对一外键关联,唯一多对一,实际上时一对一关系,这里的name是Client的属性,column是外键--><many-to-one name="client_address" class="com.hust.javabeans.Address" column="CLIENTADDRESSID" cascade="all" unique="true"></many-to-one></class>
</hibernate-mapping>

Address.hbm.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping><class name="com.hust.javabeans.Address" table="address"><id column="ID" name="id" type="integer"><generator class="identity"/></id><property name="province" column="PROVINCE"  type="string"/><property name="city"     column="CITY"    type="string"/><property name="street"   column="STREET"  type="string"/><property name="zipcode"  column="ZIPCODE" type="string"/><!-- 映射Client和Address的一对一外键关联,name是Address的属性,property-ref是Client中的属性client_address,many-to-one的name属性的值,表明建立了从address对象到company对象的关联 --><!--  <one-to-one name="address_client" class="com.hust.javabeans.Client"  property-ref="client_address"/>  --></class>
</hibernate-mapping>

hibernate一对一外键单向关联相关推荐

  1. Hibernate 一对一外键单向关联

    [align=center][size=medium]Hibernate 一对一外键单向关联[/size][/align] 基于外键关联的单向一对一关联和单向多对一关联几乎是一样的.唯一的不同就是单向 ...

  2. Hibernate一对一主键单向关联

    2019独角兽企业重金招聘Python工程师标准>>> 模型user,address address对user进行外键关联,意思就是address的主键是由user的主键关联生成的, ...

  3. Hibernate,关系映射的多对一单向关联、多对一双向关联、一对一主键关联、一对一外键关联、多对多关系关联...

    2018-11-10  22:27:02开始写 下图内容ORM.Hibernate介绍.hibername.cfg.xml结构: 下图内容hibernate映射文件结构介绍 下图内容hibernate ...

  4. hibernate一对一主键关联映射(一)---单向关联

    1.新建工程项目hibernate_one2one_pk_1,添加hibernate所需Jar包和mysql驱动Jar包. 2.建立工具类HihernateUtils.java和ExportDB.ja ...

  5. Java hibernate假外键_浅谈hibernate急迫加载问题(多重外键关联)

    数据库结构如下 strategy中有外键member_id(关联member表)外键strategy_category(关联category表)而member表中有外键position_id(关联po ...

  6. 取消hibernate的外键生成

    取消hibernate的外键生成 @ForeignKey(name="null")  /** *方法: 取得TablePropertyEntity *@return: TableP ...

  7. mysql一对一外键约束_MySQL数据库之-foreign key 外键(一对多、多对多、一对一)、修改表、复制表...

    我们在同一数据库创建的表时候,很多时候会出现相同数据的冗余问题,也就是说几个id会有一个或者同n个相同字段,这样就导致数据表结构数据重复冗余, 冗余还无所谓,关键是如果我要改其中一个相同的字段信息,其 ...

  8. python自关联_Django之Mode的外键自关联和引用未定义的Model方法

    Django Model的外键自关联 在django的model定义中,有时需要某个Field引用当前定义的Model,比如一个部门(Department)的Model,它有一个字段是上级部门(sup ...

  9. Django之Mode的外键自关联和引用未定义的Model

    Django Model的外键自关联 在django的model定义中,有时需要某个Field引用当前定义的Model,比如一个部门(Department)的Model,它有一个字段是上级部门(sup ...

最新文章

  1. keras 的 example 文件 cnn_seq2seq.py 解析
  2. 红米 Note3 (kenzo)刷入 Lineage OS
  3. e300氛围灯哪里调节_奥迪Q5L安装原厂32色20灯源氛围灯
  4. MySQL高级 全表扫描更快
  5. leetcode数组汇总_LeetCode刷题实战118:杨辉三角
  6. KODExplorer可道云-资源管理器(芒果云)
  7. ArrayDeque 双端队列
  8. Javascript框架库漏洞验证
  9. 软件正在吞噬世界!如何拯救旧金山的开发者?
  10. 方差分析(Analysis of Variance,ANOVA)是什么?怎么就可以用来做特征筛选?方差分析(ANOVA)的本质是什么?
  11. 在京东如何查找计算机的销量,京东商品真实销量数据怎么看?教你一键查询
  12. Zoiper Iphone android 通话推荐设置!
  13. WPS 设置多级标题
  14. 机器学习项目:泰坦尼克号幸存者预测
  15. HuffMan编码C语言实现
  16. 自动控制原理(2) - 线性化和传递函数
  17. 极简Python语法(5)
  18. Fedora 7安装和配置
  19. 着急使用新西兰无犯罪文件怎么办理新西兰使馆认证呢
  20. [含文档+PPT+源码等]精品基于Uniapp+SSM实现的安卓的掌上校园系统[包运行成功]计算机毕业设计Android项目源码

热门文章

  1. 关于机器学习的一些推荐
  2. java test 用法_Java的testcase用法
  3. 排序 (2)快速排序-多个数组
  4. (chap2 简单的Http协议) HTTP性能优化之管线化pipelining
  5. 以太坊节点布置(3) 启动geth客户端
  6. SAGE(SAGEMATH)密码学基本使用方法
  7. python——类和对象之__dict__属性的使用
  8. 02-Activity Monitors
  9. [专栏目录]-ARM学习笔记目录
  10. IDEA是否会嫌导jar包麻烦吗???赶快来学习maven吧,冲冲冲