Hibernate 一对一主键单向关联
1-1的关联可以基于主键关联,但基于主键关联的持久化类不能拥有自己的主键生成策略,它的主键由关联类负责生成。另外,另外,增加one-to-one元素来关联属性,必须为one-to-one元素增加constrained="true"属性,表明该类主键由关联类生成。
一、模型介绍
一个人(Person)对应一个地址(Address)。
二、实体(省略getter、setter方法)
Person11pk实体类的文件:
public class Person11pk { private int personid; private String name; private int age; private Address11pk 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 | |
+----------+--------------+------+-----+---------+-------+
四、生成的SQL脚本
/* Formatted on 2007/08/22 14:41 (QP5 v5.50) */ CREATE TABLE `person_11pk` ( `presonid` int(11) NOT NULL, `name` varchar(255) default NULL, `age` int(11) default NULL, PRIMARY KEY (`presonid`), KEY `FK68A882C591BB393E` (`presonid`), CONSTRAINT `FK68A882C591BB393E` FOREIGN KEY (`presonid`) REFERENCES `address_11pk` (`addressid`) ) ENGINE=InnoDB DEFAULT CHARSET=gbk;五、映射方法:在Person中配置id生成策略为:
<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>Address11pk实体类对应的映射文件为:
<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(); } }七、测试结果
相关推荐
Hibernate 一对一主键单向关联 Hibernate 一对一连接表单向关联 Hibernate 一对多外键单向关联 Hibernate 一对多连接表单向关联 Hibernate 多对一外键单向关联 Hibernate 多对一连接表单向关联 Hibernate 多对多单向...
hibernate主键实现一对一单向关联关系源码
博文链接:https://shaqiang32.iteye.com/blog/201308
│ ├─ 一对一主键单向关联 │ ├─ 一对一连接表单向关联 │ ├─ 一对多外键单向关联 │ ├─ 一对多连接表单向关联 │ ├─ 多对一外键单向关联 │ ├─ 多对一连接表单向关联 │ └─ 多对多单向关联 └─双向...
http://blog.csdn.net/e421083458/article/details/8794127 该源码为Hibernate教程配套源码
NULL 博文链接:https://cdxs2.iteye.com/blog/1932507
Hibernate 系列教程 单向一对多
009 一对一 主键关联映射_单向 010 一对一 主键关联映射_双向 011 一对一 唯一外键关联映射_单向 012 一对一 唯一外键关联映射_双向 013 session_flush 014 一对多关联映射 单向 015 一对多关联映射 双向 016 多对多...
hibernate一对一主键关联映射(单向关联Person---->IdCard) 8 hibernate一对一主键关联映射(双向关联Person<---->IdCard) 9 hibernate一对一唯一外键关联映射(单向关联Person---->IdCard) 10 hibernate一对一...
其中一个实体通过外键关联到另一个实体的主键(注意要模拟一对一关联必须在外键列上添加唯一约束),(3).通过关联表来保存两个实体之间的连接关系(要模拟一对一关联必须在每一个外键上添加唯一约束)。 1.共享主键的...
Hibernate 实体关联关系映射 学习总结 把一对一 一对多 单向 双向 主键 外键 链接表等讲的比较清楚
单向一对一共享主键 该存储库正在存储有关Hibernate映射示例的源代码-共享主键上的单向一对一关联
Hibernate注释大全收藏 声明实体Bean @Entity public class Flight implements Serializable { Long id; @Id public Long getId() { return id; } public void setId(Long id) { this.id...一对一 使用 @OneToOne...
7.4.2. 一对一(one to one) 7.5. 使用连接表的双向关联(Bidirectional associations with join tables) 7.5.1. 一对多(one to many) /多对一( many to one) 7.5.2. 一对一(one to one) 7.5.3. 多对多...
8.2.2. 一对一(one to one) 8.2.3. 一对多(one to many) 8.3. 使用连接表的单向关联(Unidirectional associations with join tables) 8.3.1. 一对多(one to many) 8.3.2. 多对一(many to one) 8.3.3. 一...
一对一(one to one) 7.5. 使用连接表的双向关联(Bidirectional associations with join tables) 7.5.1. 一对多(one to many) /多对一( many to one) 7.5.2. 一对一(one to one) 7.5.3. 多对多(many ...
7.4.2. 一对一(one to one) 7.5. 使用连接表的双向关联(Bidirectional associations with join tables) 7.5.1. 一对多(one to many) /多对一( many to one) 7.5.2. 一对一(one to one) 7.5.3. 多对多...
7.1 建立多对一的单向关联关系 7.1.1 元素的not-null属性 7.1.2 级联保存和更新 7.2 映射一对多双向关联关系 7.2.1 元素的inverse属性 7.2.2 级联删除 7.2.3 父子关系 7.3 映射一对多双向自身关联...