hibernate 一对一的外键关联
来源:互联网 发布:淘宝消保工具是什么 编辑:程序博客网 时间:2024/05/20 00:13
一对一的外键关联:
不共享主键,而是两表可以有一个外键关系。一张表有着引用被关联表的主键的一个外键列。
(这里用的many-to-one,而不是我们共享主键里面的one-to-one,因为:你不在乎关联的目标端是什么,
因此可以像对待没有多端的対一关联对待他。通过unique来强制说明只存在一的对应关系)
反向属性引用:
插入:
通过注解映射外键:
JPA映射注解也支持基于外键列的实体之间的一对一关系。与前面的非实体类型的区别就是,@JoinColumn替代了
如果需要双向的:
不共享主键,而是两表可以有一个外键关系。一张表有着引用被关联表的主键的一个外键列。
- <class name="User" table="USER" dynamic-insert="true" dynamic-update="true"
- mutable="false">
- <id name="userId" column="USER_ID" type="integer">
- <generator class="native"/>
- </id>
- <property name="userName" type="string" column="user_Name"/>
- <!-- 在User里面添加维护信息,也就是把User作为维护端 -->
- <many-to-one name="address" class="Address"
- column="ADDRESS_ID" unique="true" cascade="save-update"/>
(这里用的many-to-one,而不是我们共享主键里面的one-to-one,因为:你不在乎关联的目标端是什么,
因此可以像对待没有多端的対一关联对待他。通过unique来强制说明只存在一的对应关系)
反向属性引用:
- <class name="Address" table="ADDRESS">
- <id name="addressId" column="ADDRESS_ID" type="integer">
- <generator class="native">
- </generator>
- </id>
- <property name="street" type="string" column="street"/>
- <property name="city" type="string" column="city"/>
- <!-- property-ref="address"告诉hibernateAddress -->
- <!-- 基于外键的的唯一约束,一般不建议这么做,这个是不需要的 -->
- <one-to-one name="user" class="User" property-ref="address"/>
插入:
- Address address = new Address("street", "city");
- user.setAddress(address);
- //不需要
- address.setUser(user);
- Integer msgId = (Integer) session.save(user);
通过注解映射外键:
JPA映射注解也支持基于外键列的实体之间的一对一关系。与前面的非实体类型的区别就是,@JoinColumn替代了
- @PrimaryKeyJoinColumn.
- @Entity
- public class User implements Serializable {
- @Id
- @GeneratedValue
- private Integer userId;
- @Column(name="USER_NAME",length=100)
- private String userName;
- @OneToOne(cascade=CascadeType.PERSIST)
- //加入一个外键关联字段
- @JoinColumn(name="ADDRESS_ID")
- private Address address
如果需要双向的:
- @Entity
- public class Address implements Serializable {
- @Id
- @GeneratedValue
- @Column(name="ADDRESS_ID")
- private Integer addressId;
- private String street;
- private String city;
- //如果需要双向的
- //表示被User里面的address字段进行关联管理
- //mappedBy相当于xml的property-ref="address"(关联的一个简单的方向声明,就是在目标实体段指定了一种属性)
- //加上他,在数据库上是没有任何影响的,紧紧是告诉JPA容器一种关系
- @OneToOne(mappedBy="address")
- private User user;
- hibernate 一对一的外键关联
- hibernate 一对一外键关联
- Hibernate外键一对一单向和双向关联的理解
- Hibernate高级实体关联映射之单值的实体关联(一对一的外键关联)
- 13.Hibernate一对一外键&一对一主键双向关联
- Hibernate 一对一外键单向关联
- Hibernate 一对一外键双向关联
- Hibernate一对一关联(唯一外键)
- Hibernate 一对一外键单向关联
- hibernate一对一唯一外键关联
- Hibernate一对一单双向外键关联
- Hibernate 一对一外键单向关联
- hibernate一对一外键关联映射
- Hibernate 一对一外键双向关联
- Hibernate 一对一外键单向关联
- Hibernate 一对一外键双向关联
- Hibernate双向一对一外键关联
- Hibernate 一对一外键单向关联
- getChildAt与getChildByName效率比较
- JavaScript MD5 与 Java MessageDigest 加密后的值相同
- 乔布斯传记概览:乔布斯18个让人着迷的地方
- 什么是Cookie?
- LoadRunner参数的详细解释
- hibernate 一对一的外键关联
- 会话与状态管理
- xmlbeans使用scomp命令报错 java.io.IOException
- Tomcat中文乱码问题的原理和解决方法
- Unicode 串转换成Char类型串
- IMS Now: What, Why & Where?
- Sector/Sphere:High Performance Distributed File System and Parallel Data Processing Engine
- 二叉树的遍历
- Unity3D 游戏引擎之控制模型移动旋转与碰撞(七)