Hibernate基于主键和外键的单向一对一的关联映射
来源:互联网 发布:ubuntu的nat和桥接 编辑:程序博客网 时间:2024/06/05 19:26
表结构
基于外键单向一对一的关联映射
其实就是多对一中的一种情况,当unique设置为true时候可以设置一对一的关系,即设置外键值唯一
Person和IdCard类
public class Person { private int id; private String name; private int age; private IdCard idCard;//get…set}
public class IdCard{ private int id; private String code; //get…set}
IdCard.hbm.xml
<hibernate-mapping package="cn.siggy.pojo"> <class name="Grade"> <id name="id"> <generator class="native"></generator> </id> <property name="code"/> </class></hibernate-mapping>
person.hbm.xml(重点来了)
<hibernate-mapping package="cn.siggy.pojo"><class name="Person"> <id name="id"> <generator class="native"></generator> </id> <property name="name"/> <property name="age"/> <!-- 当unique设置为true时候可以设置一对一的关系 --> <many-to-one name="idCard" class="IdCard" cascade="save-update" column="idCard_Id" foreign-key="fk_idCard" not-null="true" unique="true"> </many-to-one> </class></hibernate-mapping>
测试(session对象的获取封装在HibernateUtil里面)
session = HibernateUtil.getSession(); tx = session.beginTransaction(); IdCard id1 = new IdCard(); id1.setCode("320123231212112"); IdCard id2 = new IdCard(); id2.setCode("110231432423432"); Person person1 = new Person(); person1.setName("贾宝玉"); person1.setAge(23); person1.setIdCard(id1); Person person2 = new Person(); person2.setName("林黛玉"); person2.setAge(22); person2.setIdCard(id2); Person person3 = new Person(); person3.setName("薛宝钗"); person3.setAge(21); person3.setIdCard(id2); session.save(person1); session.save(person2); //当保存person3出错 //session.save(person3); tx.commit();
基于主键单向一对一的关联映射
其实就是Person的主键生成策略变了。
表结构
Person和IdCard类
public class Person { private int id; private String name; private int age; private IdCard idCard;//get…set}
public class IdCard{ private int id; private String code; //get…set}
IdCard.hbm.xml
<hibernate-mapping package="cn.siggy.pojo"> <class name="Grade"> <id name="id"> <generator class="native"></generator> </id> <property name="code"/> </class></hibernate-mapping>
person.hbm.xml (重点来了)
<hibernate-mapping package="cn.siggy.pojo"> <class name="Person"> <id name="id"> <!-- foreign表示引用外键 --> <generator class="foreign"> <!-- 引用idCard属性所对应的主键 --> <param name="property">idCard</param> </generator> </id> <property name="name"/> <property name="age"/> <!-- 一对一 --> <one-to-one name="idCard" constrained="true" cascade="save-update"/> </class></hibernate-mapping>
阅读全文
0 0
- Hibernate基于主键和外键的单向一对一的关联映射
- hibernate基于外键的一对一映射--单向和双向
- Hibernate之基于主键映射的一对一关联关系
- Hibernate映射(一)------单向一对一主键关联
- Hibernate一对一主键关联映射(单向)
- Hibernate一对一外键关联映射(单向)
- 新手上路之Hibernate(四):单向一对一关联映射(主键、唯一外键关联)
- Hibernate外键一对一单向和双向关联的理解
- Hibernate一对一映射(基于外键的映射,基于主键的映射)
- Hibernate之关联关系映射(一对一主键映射和一对一外键映射)
- hibernate的一对一映射-主键映射-单向-mysql数据库
- Hibernate基于主键的一对一映射关系
- Hibernate ORM映射:基于主键的一对一
- Hibernate基于外键和主键的双向一对一关系映射
- Hibernate关联关系映射-----基于连接表的单向一对一映射
- 单向一对一主键关联映射
- hibernate的一对一映射-外键映射-单向-mysql数据库
- Hibernate 一对一主键单向关联
- 海量数据库(详解缓存处理方法)
- Java如何从数据中读取数据,然后插入到指定的文本中
- 论文阅读理解
- #pragma once 与 #ifdef #define #endif 区别
- Swift 头像上传(2)http://blog.csdn.net/wei_chong_chong/article/details/52611110
- Hibernate基于主键和外键的单向一对一的关联映射
- HTML—基本标识
- Docker简单入门
- Spring揭秘 学习笔记三 (Spring的IoC容器 ApplicationContext)
- WSDL 详解
- [RK3288][Android6.0] 调试笔记 --- 屏蔽Home/Back Key
- ElasticSearch 5学习——安装Elasticsearch、Kibana和X-Pack
- 在Mac的终端中进行文件转码
- Android Studio 引入com.jakewharton:butterknife:8.8.1后报空指针