首页 > 代码库 > Rhythmk 学习 Hibernate 05 - Hibernate 表间关系 [One To One]
Rhythmk 学习 Hibernate 05 - Hibernate 表间关系 [One To One]
1、One To One 单相
背景:
古代一个老婆 只能关联一个老公
husband.java
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | package com.rhythmk.model; public class husband { public Integer getHusbandId() { return husbandId; } public void setHusbandId(Integer husbandId) { this .husbandId = husbandId; } public String getName() { return Name; } public void setName(String name) { Name = name; } private Integer husbandId; private String Name; } |
hasband.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.rhythmk.model"> <class name="husband" table="t_husband"> <id name="husbandId" type="int"> <column name="husbandId" /> <generator class="native" /> </id> <property name="Name" type="string"> </property> </class> </hibernate-mapping>
wife.java
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | package com.rhythmk.model; public class wife { private Integer wifeId; private String name; public Integer getWifeId() { return wifeId; } public void setWifeId(Integer wifeId) { this .wifeId = wifeId; } public String getName() { return name; } public void setName(String name) { this .name = name; } public husband getHb() { return hb; } public void setHb(husband hb) { this .hb = hb; } private husband hb; @Override public String toString() { return "wife [wifeId=" + wifeId + ", name=" + name + ", hb=" + hb + "]" ; } } |
wife.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.rhythmk.model"> <class name="wife" table="t_wife"> <id name="wifeId" type="int"> <column name="wifeId" /> <generator class="native" /> </id> <property name="Name" type="string"> </property> <!-- one to one 类似于 one to many 只需要添加 unique =true 即可 --> <many-to-one name="hb" column="husbandId" ></many-to-one> </class> </hibernate-mapping>
注意:
one to one 类似于 one to many 只需要添加 unique =true 即可
2、One To One 双向
跟单相查不多 就是两边都配上 many to one
调整 hasband.hbm.xml 添加:
<!-- one to one 类似于 one to many 只需要添加 unique =true 即可 --> <many-to-one name="mywife" column="wifeId" ></many-to-one>
调整 husband.java :
?
1 2 3 4 5 6 7 | public wife getMywife() { return mywife; } public void setMywife(wife mywife) { this .mywife = mywife; } private wife mywife; |
测试:
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | @Test public void test02_add() { Session session = null ; try { session = HibernateUtil.getSessionFactory().openSession(); session.beginTransaction(); husband hb = new husband(); hb.setName( "王大1" ); wife w = new wife(); w.setName( "张妞 2" ); w.setHb(hb); hb.setMywife(w); session.save(hb); session.save(w); System.out.println(w.toString()); session.getTransaction().commit(); } catch (Exception e) { e.printStackTrace(); } finally { if (session != null ) session.close(); } } |
输出:
Hibernate: insert into t_husband (Name, wifeId) values (?, ?)
Hibernate: insert into t_wife (Name, husbandId) values (?, ?)
wife [wifeId=6, name=张妞 2, hb=com.rhythmk.model.husband@8b677f]
Hibernate: update t_husband set Name=?, wifeId=? where husbandId=?
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。