码迷,mamicode.com
首页 > Web开发 > 详细

Hibernate中双向一对一保存数据的问题

时间:2015-04-28 12:06:31      阅读:131      评论:0      收藏:0      [点我收藏+]

标签:hibernate

private static void test10() {
		// 获得session 对象
		SessionFactory sessionFactory = new Configuration().configure()
				.buildSessionFactory();
		Session session = sessionFactory.openSession();
		// session开启事务
		session.beginTransaction();
		// 创建 一对一 对象数据
		PersonInfo personinfo = new PersonInfo();
		personinfo.setPerAge("perage");
		One2One one2one = new One2One();
		one2one.setTest2("one2one");
		// one2one 主键值来自外部 personinfo的主键值 并且作为personinfo 主键的外键

		// 向personinfo 设置one2one 数据 不设置 保存personinfo 不创建one2one 的记录
		personinfo.setOne2one(one2one);
		// 设置 one2one personinfo的数据,one2one 的主键值 从 personinfo对象里获得设置
		one2one.setpersonInfo(personinfo);
		// 保存personinfo对象 如果设置 成员变量 one2one的值 则会向 one2one表里 插入一条记录否则
		// 只插入personinfo表一条记录
		session.save(personinfo);
		// 刷新session
		session.flush();
		// 关闭事务
		session.getTransaction().commit();

	}


运行结果

Hibernate: insert into personinfo (perName, perSex, perAge, perPhone, PerAddress, perJob, perEntryTime, PerDeparturetime, perCreateDate, perLastModifyDate, perId) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)

Hibernate: insert into one2one (test1, test2, test3, test4) values (?, ?, ?, ?)



由于是双向关联 所以两边的xml 配置 <one-to-one> 可以是任意替换的。任何一个类都可以作为主表与另一个表做映射

personinfo

	<one-to-one name="one2one" class="com.yjm.pojo.person.One2One"
			fetch="join" cascade="all">
		</one-to-one>

one2one

	<id name="test4" type="java.lang.String">
			<generator class="foreign">
				<param name="property">personInfo</param>
			</generator>
		</id>	
		<one-to-one name="personInfo"></one-to-one>


Hibernate中双向一对一保存数据的问题

标签:hibernate

原文地址:http://yjm199.blog.51cto.com/4408395/1639575

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!