Hibernate的基于主键的one-to-one
来源:互联网 发布:linux支持安装什么软件 编辑:程序博客网 时间:2024/05/22 03:21
一 示例
基于主键一对一(Person - IdCard)
IdCard的映射文件
<id name="id"> <generator class="foreign"> <param name="property">person</param> </generator><id><one-to-one name="person" constrained="true"/>
[没有constraned true将不会生成外键约束]
Person映射文件
<one-to-one name="idCard" />
二 图解
三 代码
1 IdCard
package com.hsp.domain;import java.util.Date;public class IdCard implements java.io.Serializable { private static final long serialVersionUID = 1L; private Integer id; private Date validateDte; private Person person; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public Date getValidateDte() { return validateDte; } public void setValidateDte(Date validateDte) { this.validateDte = validateDte; } public Person getPerson() { return person; } public void setPerson(Person person) { this.person = person; }}
2 Person
package com.hsp.domain;public class Person implements java.io.Serializable { private static final long serialVersionUID = 1L; private Integer id; private String name; private IdCard idCard; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public IdCard getIdCard() { return idCard; } public void setIdCard(IdCard idCard) { this.idCard = idCard; }}
3 IdCard.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 package="com.hsp.domain"><class name="IdCard" table="idCard"><!-- 因为我们这里讲的是基于主键的one-to-one, 所以我们使用外键策略 --> <id name="id" type="java.lang.Integer"><generator class="foreign"><param name="property">person</param></generator></id><property name="validateDte" type="java.util.Date"><column name="validateDte"/></property><!-- 这里配置IdCard和person属性是一对一的关系 --><one-to-one name="person" constrained="true"/></class></hibernate-mapping>
4 Person.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 package="com.hsp.domain"><class name="Person" table="person"><id name="id" type="java.lang.Integer"><!-- 这里我们手动分配id --><generator class="assigned"/></id><property name="name" type="java.lang.String"><column name="name" length="128"/></property><!-- 这里配置person和idcard属性是一对一的关系 --><one-to-one name="idCard"/></class></hibernate-mapping>
四 测试代码
package com.hsp.view;import java.util.Date;import java.util.HashSet;import java.util.Set;import org.hibernate.Hibernate;import org.hibernate.Session;import org.hibernate.Transaction;import com.hsp.domain.IdCard;import com.hsp.domain.Person;import com.hsp.util.HibernateUtil;public class TestMain { /** * @param args */ public static void main(String[] args) { //添加一组Person/idcard Session s=null; Transaction tx=null; try { //我们使用基础模板来讲解. s=HibernateUtil.getCurrentSession(); tx=s.beginTransaction(); Person p1=new Person(); p1.setId(1234); p1.setName("顺平"); IdCard idCard=new IdCard(); idCard.setId(1900); idCard.setValidateDte(new Date()); idCard.setPerson(p1);//表示idCard对象是属于p1这个对象. s.save(p1);//先保存人 s.save(idCard); tx.commit(); } catch (Exception e) { e.printStackTrace(); if(tx!=null){ tx.rollback(); } }finally{ if(s!=null && s.isOpen()){ s.close(); } } }}
五 测试结果
生成两张表的结构如下:
CREATE TABLE `idcard` ( `id` int(11) NOT NULL, `validateDte` datetime DEFAULT NULL, PRIMARY KEY (`id`), KEY `FKB8CDF6CB2A59F864` (`id`), CONSTRAINT `FKB8CDF6CB2A59F864` FOREIGN KEY (`id`) REFERENCES `person` (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;CREATE TABLE `person` ( `id` int(11) NOT NULL, `name` varchar(128) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;
阅读全文
0 0
- Hibernate的基于主键的one-to-one
- (**)hibernate中基于主键和基于外键的one-to-one
- Hibernate的基于外健的one-to-one
- hibernate------one-to-one(一个表的主键由另一个表的主键决定)
- hibernate annotation one to one 共享主键
- Hibernate 一对一的关系(one-to-one)
- hibernate的级联-----one-to-one
- one to one 基于注解配置的共享主键的操作说明
- hibernate annotation对jpa主键one-to-one映射关系支持的有问题
- Hibernate one-to-one 复合主键相同的mapping文件配置方法
- Hibernate的one-to-many
- hibernate的one-to-many
- hibernate的one-to-many
- JPA注解实现one-to-one的主键关联映射
- hibernate的one-to-many和many-to-one实例
- hibernate one-to-many与many-to-one的使用
- Hibernate one-to-many many-to-one 的配置
- Hibernate one-to-one
- vibe原理认识,可能有的地方不对,看不懂英文的,只能看翻译的
- Kafka设计解析(八)- Exactly Once语义与事务机制原理
- POJ 1589 Unix ls 排序和字符串处理
- 一起Talk Android吧(第五十三回:Android中的Fragment嵌套与交互小结)
- 数字货币市场总体上扬,可是国家还是保守的居多
- Hibernate的基于主键的one-to-one
- 8.Python入门之函数类型
- ubuntu14.04离线安装ssh
- size_type类型总结
- http服务
- @property装饰器
- 鼠标浮在行之上时改行文字和背景反色
- 从银行卡中获取你的身份证号码,你造嘛?
- BZOJ1878: [SDOI2009]HH的项链