Hibernate提供了两种一对一关联关系的方式,按照外键映射和按照主键映射.
一对一关系映射即为关系双方都含有对方一个引用其实在生活中一
对一关系也很常见比如人和身份证学生和学号等都是一对一的关
系映射一对一映射分为单向的和双向的没种关系映射又可以分为主
键关联映射,唯一外键关联映射。
保存员工档案的同时分配给员工一个账号..
在映射持久化对象中的属性时,需要注意一些问题
Resume1.hbm.xml
<many-to-many
name="users1"
class="cn.happy.entity.Users1"
column="resuserid"
cascade="all" //为了
unique="true" //表明每一个resume1对象和User1对象之间一对一的关联关系
/>
Users1.hbm.xml
<one-to-one name="resume1"
class="cn.happy.entity.User"
property-ref="users1" //表明Resume1的user1属性建立了从User1对象到Resume1对象的关联
/>
Test代码
package cn.happy.test; import org.hibernate.Session; import org.hibernate.Transaction; import org.junit.After; import org.junit.Before; import org.junit.Test; import cn.happy.entity.Resume1; import cn.happy.entity.Users1; import cn.happy.util.HibernateUtil; public class MyTest { Session session; Transaction tx; @Before public void initDate(){ session=HibernateUtil.getSession(); tx=session.beginTransaction(); } @After public void afterDate(){ tx.commit(); HibernateUtil.closeSession(); } @Test public void addTest(){ //构建档案 Resume1 resume1 =new Resume1(3,"张三","21000302123165456"); //构建用户,不需要提供主键,因为user2对象和resume2对象共同用一个oid Users1 users1 =new Users1("zhangsan","123456"); resume1.setUsers1(users1); users1.setResume1(resume1); session.save(resume1); } @Test public void getoneTest(){ Resume1 resume1=(Resume1)session.load(Resume1.class, 1); Users1 users1 =resume1.getUsers1(); System.out.println("姓名:"+resume1.getResname()); System.out.println("用户名"+users1.getUsername()); } }
来源:https://www.cnblogs.com/liang67732116/p/5843112.html