映射一对一

来源:互联网 发布:usb端口禁用软件 编辑:程序博客网 时间:2024/05/16 19:48

Address  外键

package cn.itcast.one2onefk;public class Address {private Integer id;private String city;private String country;private Company company;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getCity() {return city;}public void setCity(String city) {this.city = city;}public String getCountry() {return country;}public void setCountry(String country) {this.country = country;}public Company getCompany() {return company;}public void setCompany(Company company) {this.company = company;}}
Company

package cn.itcast.one2onefk;public class Company {private Integer id;private String name;private Address address;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 Address getAddress() {return address;}public void setAddress(Address address) {this.address = address;}}

Address.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><class name="cn.itcast.one2onefk.Address" table="address">      <id name="id" type="integer">         <column name="id"></column>         <generator class="increment"/>      </id>      <property name="city" type="string">        <column name="city"></column>      </property>      <property name="country" type="string">      <column name="country"></column>      </property>      <!--       one-to-one:用于映射一对一       该元素使用 property-ref(可以不加)属性指定使用被关联实体主键       以外的字段作为关联字段       如何获取company属性的值 通过address表的主键(company表的外键)获取       -->      <one-to-one name="company" property-ref="address"></one-to-one></class></hibernate-mapping>

Company.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><class name="cn.itcast.one2onefk.Company" table="company">      <id name="id" type="integer">         <column name="id"></column>         <generator class="increment"/>      </id>      <property name="name" type="string">        <column name="name"></column>      </property>      <!--         正常是 多个公司对应一个地址        在需要存放外键的一段 增加 many-to-one           many-to-one:映射多对一关联              * address:带映射的持久化类的属性              * column:对应的表的字段,address属性的值通过company表的外键到address表中查的              * unique="true":唯一的,company表的外键列的值是唯一的,把多对一改为一对一         -->      <many-to-one name="address" column="addressId" unique="true" not-null="true"></many-to-one></class></hibernate-mapping>

App

package cn.itcast.one2onefk;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.Transaction;import org.hibernate.cfg.Configuration;import org.junit.Test;public class App {static SessionFactory sf = null;static {Configuration config = new Configuration();config.configure("cn/itcast/one2onefk/hibernate.cfg.xml");    config.addClass(Company.class);    config.addClass(Address.class);sf = config.buildSessionFactory();}@Testpublic void insert(){Session s=sf.openSession();Transaction t=s.beginTransaction();Company c=new Company();c.setName("传智博客");Address address=new Address();address.setCity("北京");address.setCountry("中国");c.setAddress(address);address.setCompany(c);//先保存地址 在保存公司 s.save(address);s.save(c);t.commit();s.close();}} 

主键

Address。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><class name="cn.itcast.one2onepk.Address" table="address">      <id name="id" type="integer">         <column name="id"></column>         <!-- class:表示该表主键的值是参照其他表的主键         <param name="property">company</param>         表示 property表示该值参照其他的属性值          company:参照company表的主键         -->         <generator class="foreign">         <param name="property">company</param>         </generator>      </id>      <property name="city" type="string">        <column name="city"></column>      </property>      <property name="country" type="string">      <column name="country"></column>      </property>      <!-- constrained:true给表的主键增加外键约束 -->      <one-to-one name="company" constrained="true"></one-to-one></class></hibernate-mapping>
Company.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><class name="cn.itcast.one2onepk.Company" table="company">      <id name="id" type="integer">         <column name="id"></column>         <generator class="identity"/>      </id>      <property name="name" type="string">        <column name="name"></column>      </property>      <!-- 映射1对1 -->      <one-to-one name="address"></one-to-one></class></hibernate-mapping>


原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 孩子睡觉出汗多怎么办 三年级孩子成绩下滑怎么办 幼儿数学不开窍怎么办 孩子一年级学习跟不上怎么办 孩子学习不认真怎么办 孩子平时不细心怎么办? 脖子出现黑圈怎么办 简历留白太多怎么办 excel数字外面加个圈怎么办 电脑输入法数字数不上怎么办 大班教案迷路了怎么办 迷路了怎么办活动反思 头突然眩晕是怎么办 孩子学习拖拉懒惰怎么办 头发晕想睡觉怎么办 五年级错别字多怎么办 入党志愿书写错字怎么办 高中不会写作文怎么办 考试不会写作文怎么办 高考不会写作文怎么办 孩子总是写错字怎么办 小孩总是写错字怎么办 孩子马虎不认真怎么办 小孩计算老出错怎么办 小学生计算总出错怎么办 高中考试总粗心怎么办 孩子考试总是粗心怎么办 一年级孩子考试粗心怎么办 老师说孩子粗心怎么办 计算题总出错怎么办 计算题总是出错怎么办 数学老是计算错误怎么办? 苗木抵扣计算错误怎么办 表格中计算错误怎么办 孩子电视瘾太大怎么办 孩子考试前失眠怎么办 孩子上网瘾了怎么办 孩子考试差家长怎么办 手指肿痛有脓包怎么办 手指脓出来红肿怎么办 手指提重物发麻怎么办