Hibernate 一对一主键单向关联
2009-12-04 13:23
483 查看
版权声明:原创作品,如需转载,请与作者联系。否则将追究法律责任。
原文地址:/article/4231418.html
原文地址:/article/4231418.html
Hibernate 一对一主键单向关联 |
1-1的关联可以基于主键关联,但基于主键关联的持久化类不能拥有自己的主键生成策略,它的主键由关联类负责生成。另外, 增加one-to-one元素来关联属性,必须为one-to-one元素增加constrained="true"属性,表明该类主键由关联类生成。 |
一、模型介绍 |
一个人(Person)对应一个地址(Address)。 |
二、实体(省略getter、setter方法) |
public class Person11pk { private int personid; private String name; private int age; private Address11pk address11pk; public class Address11pk { private int addressid; private String addressdetail;
三、表模型 | |||||||||||||||||||
mysql> desc address_11pk; | |||||||||||||||||||
+---------------+--------------+------+-----+---------+----------------+ | |||||||||||||||||||
| Field | Type | Null | Key | Default | Extra | | |||||||||||||||||||
+---------------+--------------+------+-----+---------+----------------+ | |||||||||||||||||||
| addressid | int(11) | NO | PRI | NULL | auto_increment | | |||||||||||||||||||
| addressdetail | varchar(255) | YES | | NULL | | | |||||||||||||||||||
+---------------+--------------+------+-----+---------+----------------+ | |||||||||||||||||||
mysql> desc person_11pk; | |||||||||||||||||||
+----------+--------------+------+-----+---------+-------+ | |||||||||||||||||||
| Field | Type | Null | Key | Default | Extra | | |||||||||||||||||||
+----------+--------------+------+-----+---------+-------+ | |||||||||||||||||||
| personid | int(11) | NO | PRI | | | | |||||||||||||||||||
| name | varchar(255) | YES | | NULL | | | |||||||||||||||||||
| age | int(11) | YES | | NULL | | | |||||||||||||||||||
+----------+--------------+------+-----+---------+-------+
| |||||||||||||||||||
<id name="personid"> <!--基于主键关联时,主键生成策略是foreign,表明根据关联类生成主键--> <generator class="foreign"> <!--关联持久化类的属性名--> <param name="property">address11pk</param> </generator> </id> ...... <!--用于映射1-1关联--> <one-to-one name="address11pk" constrained="true"/> <hibernate-mapping> <class name="com.lavasoft.dx._1_1_pk.Person11pk" table="PERSON_11pk"> <id name="personid" column="presonid"> <!--基于主键关联时,主键生成策略是foreign,表明根据关联类生成主键--> <generator class="foreign"> <!--关联持久化类的属性名--> <param name="property">address11pk</param> </generator> </id> <property name="name"/> <property name="age"/> <!--用于映射1-1关联--> <one-to-one name="address11pk" constrained="true"/> </class> </hibernate-mapping> <hibernate-mapping> <class name="com.lavasoft.dx._1_1_pk.Address11pk" table="ADDRESS_11pk"> <id name="addressid"> <generator class="identity"/> </id> <property name="addressdetail"/> </class> </hibernate-mapping> 六、测试方法 public class Test_11pk { public static void main(String[] args){ Person11pk p1=new Person11pk(); p1.setAge(21); p1.setName("p1"); Address11pk add1=new Address11pk(); add1.setAddressdetail("郑州市经三路"); p1.setAddress11pk(add1); Session session= HibernateUtil.getCurrentSession(); Transaction tx=session.beginTransaction(); session.save(add1); session.save(p1); tx.commit(); HibernateUtil.closeSession(); } } [b]七、测试结果 1) :正常保存. 推荐这么干! session.save(add1); session.save(p1); Hibernate: insert into ADDRESS_11fk (addressdetail) values (?) Hibernate: insert into PERSON_11fk (name, age, addressId) values (?, ?, ?) 2) :正常保存. session.save(p1); session.save(add1); Hibernate: insert into PERSON_11fk (name, age, addressId) values (?, ?, ?) Hibernate: insert into ADDRESS_11fk (addressdetail) values (?) Hibernate: update PERSON_11fk set name=?, age=?, addressId=? where personid=? 3) :正常保存. // session.save(p1); session.save(add1); Hibernate: insert into ADDRESS_11fk (addressdetail) values (?) 4) : 发生异常,不能保存. session.save(p1); // session.save(add1); Hibernate: insert into PERSON_11fk (name, age, addressId) values (?, ?, ?) Exception in thread "main" org.hibernate.TransientObjectException: com.lavasoft.dx._1_1_fk.Address11fk 本文出自 “熔 岩” 博客,转载请与作者联系! [b]附件下载: _1_1_pk [/b] [/b] |
相关文章推荐
- Hibernate 一对一主键单向关联
- java鬼混笔记:Hibernate:2、一对一关系之主键单向和双向关联
- Hibernate 一对一主键单向关联
- hibernate一对一主键关联单向(一)
- Hibernate关系映射(3)_一对一单向主键关联
- Hibernate 一对一主键单向关联
- hibernate一对一单向主键关联_Annotation
- hibernate---一对一单向主键关联(不重要)
- Hibernate学习笔记_08_一对一单向、双向主键关联
- 038:hibernate一对一单向主键关联(不重要)
- Hibernate关联之 一对一主键单向关联
- Hibernate 一对一主键单向关联
- 3.一对一单向主键关联(人对身份证) hibernate.cfg.xml
- Hibernate主键一对一关联映射实例【xml和注解版本@OneToOne@JoinColumn(name="wifeId")--主键单向】(十二)
- Hibernate关系映射(5)_一对一单向联合主键关联
- Hibernate 第十讲 表关联关系(三)单向项一对一主键关联
- hibernate一对一主键关联单向(二)
- Hibernate实体关系映射:单向主键一对一关联
- hibernate一对一主键单向关联
- Hibernate基于主键和外键的单向一对一的关联映射