Hibernate _one to one 主键关联 XML配置

人 与身份证 一对一 主键关联:

 1 package com.helen.model;
 2
 3 public class People1 {
 4     private int id;
 5     private String name;
 6     private int age;
 7     private IDcard1 idcard;
 8
 9
10     public int getId() {
11         return id;
12     }
13
14     public void setId(int id) {
15         this.id = id;
16     }
17
18     public String getName() {
19         return name;
20     }
21
22     public void setName(String name) {
23         this.name = name;
24     }
25
26     public int getAge() {
27         return age;
28     }
29
30     public void setAge(int age) {
31         this.age = age;
32     }
33
34     public IDcard1 getIdcard() {
35         return idcard;
36     }
37
38     public void setIdcard(IDcard1 idcard) {
39         this.idcard = idcard;
40     }
41
42
43
44 }
 1 package com.helen.model;
 2
 3 public class IDcard1 {
 4     private int id;
 5     private String cardCode;
 6     private People1 people;
 7
 8     public int getId() {
 9         return id;
10     }
11
12     public void setId(int id) {
13         this.id = id;
14     }
15
16     public String getCardCode() {
17         return cardCode;
18     }
19
20     public void setCardCode(String cardCode) {
21         this.cardCode = cardCode;
22     }
23
24     public People1 getPeople() {
25         return people;
26     }
27
28     public void setPeople(People1 people) {
29         this.people = people;
30     }
31
32 }

XML 配置

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
 3 "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
 4 <hibernate-mapping>
 5     <class name="com.helen.model.People1" table="t_PEOPLE">
 6
 7         <id name="id" type="int">
 8             <column name="ID" />
 9             <generator class="native" />
10         </id>

11
12         <property name="name" type="java.lang.String">
13             <column name="NAME" />
14         </property>
15         <property name="age" type="int">
16             <column name="AGE" />
17         </property>
18
19         <one-to-one name="idcard" class="com.helen.model.IDcard1" />
20
21     </class>
22 </hibernate-mapping>
 1 <?xml version="1.0" encoding="utf-8"?>
 2 <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
 3 "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
 4 <hibernate-mapping>
 5     <class name="com.helen.model.IDcard1" table="t_IDCARD">
 6
 7         <id name="id" type="int">
 8             <column name="ID" />
 9             <generator class="foreign">            //外键
10                 <param name="property">people</param>
11             </generator>
12         </id>
13
14
15         <property name="cardCode" type="java.lang.String">
16             <column name="CARDCODE" />
17         </property>
18
19
20         <one-to-one name="people" class="com.helen.model.People1"     constrained="true">
22         </one-to-one>

23     </class>
24 </hibernate-mapping>

SessionFactory:

 1 package com.helen.dao;
 2
 3 import org.hibernate.Session;
 4 import org.hibernate.SessionFactory;
 5 import org.hibernate.cfg.AnnotationConfiguration;
 6 import org.hibernate.cfg.Configuration;
 7
 8 public class HibernateUtil {
 9     private static SessionFactory sf;
10     static {
11         // sf = new AnnotationConfiguration().configure().buildSessionFactory();
12         sf = new Configuration().configure().buildSessionFactory();
13     }
14
15     public static SessionFactory getSessionFactory() {
16         return sf;
17     }
18
19     public static Session getSession() {
20         return sf.openSession();
21     }
22 }

Test 类:

 1 package com.helen.test;
 2
 3 import org.hibernate.Session;
 4
 5 import com.helen.dao.HibernateUtil;
 6 import com.helen.model.IDcard1;
 7 import com.helen.model.People1;
 8
 9 public class Test {
10     static Session session;
11
12     public static void main(String args[]) {
13
14         session = HibernateUtil.getSession();
15         session.beginTransaction();
16         People1 p = new People1();
17         p.setName("Helen");
18         p.setAge(21);
19         IDcard1 idcard = new IDcard1();
20         idcard.setCardCode("100111011012356");
21         idcard.setPeople(p);
22         session.save(idcard);
23         session.getTransaction().commit();
24         session.close();
25     }
26
27 }

people 表:

IDcard 表:

时间: 2024-08-07 17:03:37

Hibernate _one to one 主键关联 XML配置的相关文章

Hibernate注解:一对一主键关联

情形:两个表,my_site和my_site_company,通过主键site_id唯一关联.my_site的主键是自动增加,my_site_company的主键依赖于my_site. # # Source for table my_site # DROP TABLE IF EXISTS `my_site`; CREATE TABLE `my_site` ( `site_id` int(11) NOT NULL AUTO_INCREMENT, `site_name` varchar(100) D

Hibernate之:各种主键生成策略与配置详解

1.assigned 主键由外部程序负责生成,在 save() 之前必须指定一个.Hibernate不负责维护主键生成.与Hibernate和底层数据库都无关,可以跨数据库.在存储对象前,必须要使用主键的setter方法给主键赋值,至于这个值怎么生成,完全由自己决定,这种方法应该尽量避免. <id name="id" column="id"> <generator class="assigned" /> </id&g

No row with the given identifier exists-----hiberbate非主键关联

这个错误有两种情况: 1,非主键关联为配置property-ref=(关联表的非主键列) 属性! Hibernate配置文件中关联默认的是主键关联,如果要关联非主键则必须加property-ref 属性 <many-to-one name="domainBO" class="***.common.model.bo.DomainBO" fetch="select" property-ref="domain">    

【SSH之旅】一步步学习Hibernate框架(二):一对一关联映射中的主键关联

一对一的映射在对象模型中是经常见到的,主要是将对象模型转换为关系模型就必须在映射文件中进行配置,重点是<one-to-one>标签的使用,有两种方式,第一是主键关联,第二是唯一外键关联,现在先来看第一种方式. 一对一的关联映射中的主键关联,就是说两个对象具有相同的主键值,以表明它们之间的一一对应的关系,数据库表不会有额外的字段来维护它们之间的关系,仅仅是通过表的主键来关联. 上图的Person类和IdCard类之间是一一对应关系,一个人就只能有一个身份证,一个身份证只能对应一个人,那么身份证的

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

2018-11-10  22:27:02开始写 下图内容ORM.Hibernate介绍.hibername.cfg.xml结构: 下图内容hibernate映射文件结构介绍 下图内容hibernate映射文件中主键自增规则.Hibernate实例状态(瞬时状态.持久化状态.托管状态).Hibernate初始化类获取session等方法 下图内容保存数据过程 下面内容保存数据顺序.查询数据方法 get().load()和延迟加载.删除数据 下图内容删除对象顺序.修改数据顺序 下面内容关联关系映射.

HIBERNATE一对一双向外键联合主键关联

HIBERNATE一对一双向外键联合主键关联: 一. 创建主键类:这个主键必须实现serializedable接口和重写其中的hashCode方法和equals方法:为主键类添加一个叫做@Embeddable的注解和为实体类添加一个叫做@EmbeddabledId的注解

(转) Hibernate持久化类与主键生成策略

http://blog.csdn.net/yerenyuan_pku/article/details/65462930 Hibernate持久化类 什么是持久化类呢?在Hibernate中持久化类的英文名称是Persistent Object(简称PO),PO=POJO+hbm映射配置文件. 对于Hibernate中的PO,有如下编写规则: 必须提供一个无参数的public构造方法. 所有属性要用private修饰,对外提供public的get/set方法. 在PO类必须提供一个标识属性,让它与

Hibernate-----一对一共享主键关联映射(映射文件方式)

共享主键关联映射:让两个对象具有相同的主键值,以表明他们之间的一对一对应的关系:数据库表不会有额外的字段来维护他们之间的关系,仅通过表的主键来关联 一.单向关联映射: One(维护端:Person) <?xml version="1.0"encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD3.0//EN"

Hibernate5.2之一对一主键关联(四)

                                                  Hibernate5.2之一对一主键关联(四) 一.简介 一对一关联关系分为两种:a.主键关联:b.外键关联.这两种关联关系在日常的开发中都比较的常用,本篇文章介绍主键关联,在下一篇文章中介绍外键关联. 二.主键关联 2.1 数据库的创建 create table cards ( id varchar2(255 char) not null, card_num varchar2(255 char)