Hibernate一对一双向关联(外键)
网站上各种搜索,都是一些清晰或者不清晰的例子,但是用下来一是确实不给力,二是完全不知道所以然。
后来终于在书中查到了就在这里记一下。
首先要说明,这里只解释双向一对一只有一个表里面有外键的情况。
就以比较普遍的Person和Address为例。
新建表t_person: person_id,person_name.
新建表t_address:address_id,person_id.
新建Person.java类里面有属性:personId, personName, address;
新建Address.java类里面有属性:addressId,person;
重点来了,在Person.hbm.xml里面这么配置
<one-to-one name="address" class="com.bean.Address" cascade="all" property-ref="person"/>
而在Address.hbm.xml里面这么配置
<many-to-one name="person" class="com.bean.Person" fetch="select" unique="true" column="person_id"/>
我们可以看到一个是one-to-one一个是many-to-one的unique。
分清楚这两个很重要,many-to-one用在保存外键的表,也就是说Address表,one-to-one用在没有保存外键的表,也就是person表.
而Address.hbm.xml这个配置的意思是:在Address.java里面有一个person属性,它是一个外键,并且对应的列是t_address表里面的person_id. unique="true" 是说这里的关系是一对一的。
Person.hbm.xml 的配置文件意思是:我是一个主表,我里面有一个addresss的属性,跟t_address表里面的person_id是关联再一起 的。
cascade=“all”的意思是,级联所有操作,关于这个属性更详细的资料自己查去。
这样就够清楚了吧。
Hibernate一对一双向关联(外键)的更多相关文章
- Hibernate一对一双向关联映射
关键原因在于对象模型具有方向性: 单向:一端只能加载另一端,不能反过来. 双向:两端都可以加载另一端. 问题来了:如何我们想从身份证端(IdCard)加载人(Person),怎么办呢? 下面我们开始介 ...
- hibernate 多表关联外键问题无法截断表的解决办法
目前只有一个办法 就是手动清除其他表的外键关联,然后在做一个小swing单独去操作这个表,而不运行主控方相关的代码 当web运行后,外键会再次设置好
- Hibernate 一对一(基于唯一外键的关联)
主表 hbm.xml中 使用<one-to-one> 从表hbm.xml中使用<many-to-one> 并指定unique=true people.hbm.xml: < ...
- Hibernate一对一双向关联(注解)
每一个人(Person)对应一个身份证号(IdCard) package cqvie.yjq.domain; import java.util.Date; import javax.persisten ...
- Java进阶知识07 Hibernate一对一双向外键关联(Annotation+XML实现)
1.Annotation 注解版 1.1.创建Husband类和Wife类 package com.shore.model; import javax.persistence.Entity; impo ...
- HIBERNATE一对一双向外键联合主键关联
HIBERNATE一对一双向外键联合主键关联: 一. 创建主键类:这个主键必须实现serializedable接口和重写其中的hashCode方法和equals方法:为主键类添加一个叫做@Embedd ...
- (Hibernate进阶)Hibernate映射——一对一双向关联映射(六)
上一篇博客我们介绍了一对一的单向关联映射,单向是指只能从人(Person)这端加载身份证端(IdCard),但是反过来,不能从身份证端加载人得信息.如图所示: 关键原因在于对象模型具有方向性: 单向: ...
- Hibernate从入门到精通(六)一对一双向关联映射
在上次的博文Hibernate从入门到精通(五)一对一单向关联映射中我们讲解了一下一对一单向关联映射,这次我们继续讲解一下与之对应的一对一双向关联映射. 一对一双向关联 与一对一单向关联映射所不同的的 ...
- Hibernate(六)一对一双向关联映射
在上次的博文Hibernate从入门到精通(五)一对一单向关联映射中我们讲解了一下一对一单向关联映射, 这次我们继续讲解一下与之对应的一对一双向关联映射. 一对一双向关联 与一对一单向关联映 射所不同 ...
随机推荐
- PPTP、L2TP、IPSec和SSLVPN的区别
VPN (虚拟专用网)发展至今已经不在是一个单纯的经过加密的访问隧道了,它已经融合了访问控制.传输管理.加密.路由选择.可用性管理等多种功能,并在全球的信息安全体系中发挥着重要的作用.也在网络上,有关 ...
- 理解URI和URL
1)定义: URI: Uniform Resource Identifier,通用资源标识符 ---是一个用于标识某一互联网资源名称的字符串(by 维基百科) URL:Uniform Resource ...
- skynet启动过程_1
skynet的启动时需带个配置文件,这个文件其实是作为lua全局变量用的,见 int main(int argc, char *argv[]) { const char * config_file = ...
- 如何在已安装vs2010的基础上安装sql2008
以前老受到别人写的这类东西的帮助,所以这次决定自己试下,第一次发这种,写得不好莫怪. 涉略sql2008一个多星期了.怎么说呢?Transact-SQL的编程虽然不如C++,java等高级 ...
- Java联网技术之一TCP
最近突然对java网络编程编程这一块非常感兴趣,于是找了很多资料,一点点的尝试,下面是自己的一点小见解,不喜勿喷,欢迎指正. 首先说说客户端和服务器端吧, 如果是网页的话,客户端通过网页的链接对服务器 ...
- 腾讯海量数据处理平台TDW
TDW是腾讯海量数据处理平台中最核心的模块,它有以下几个作用: 提供海量的离线计算和存储服务.TDW是腾讯内部规模最大的离线数据处理平台,公司内大多数业务的产品报表.运营分析.数据挖掘等的存储和计算都 ...
- 20160322 javaweb 学习笔记--response 重定向
//一般方法 response.setStatus(302); response.setHeader("Location", "/20160314/index.jsp&q ...
- sqlserver临时表排序问题
在2005和2008中,如果将有序的记录插入临时表,则从临时表查看出来的记录是有序的(不使用Order by也是有序状态) 但从2012开始,即使插入的记录集是有序的,查看出来的结果变得无序了,需要依 ...
- 有理数类 Java BigInteger实现
import java.math.BigInteger; public class Rational extends Number implements Comparable { private Bi ...
- 经历:easyui的datagrid没有数据滚动条的显示
今天,一个用户提出一个这样的问题,"查询不到结果时,为什么我看不到后面的标题呢?" 最初,我听到这个问题时,第一反应是:查出来数据不就有滚动条了吗,干嘛非要较真呢? 不过,后来想想 ...