Hibernate关联之一对一主键双向关联
来源:互联网 发布:淘宝卖家店铺名称 编辑:程序博客网 时间:2024/05/29 07:54
Hibernate一对一主键双向关联
一对一主键映射在一对一映射中还算是最为常用的。
一、模型介绍
一个人(Person)对应一个地址(Address)。
二、实体(省略getter、setter方法)
public class Person11pkboth {
private int personid;
private String name;
private int age;
private Address11pkboth address11pkboth;
public class Address11pkboth {
private int addressid;
private String addressdetail;
private Person11pkboth person11pkboth;
三、表模型
mysql> desc address_11pkboth;
+---------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------+--------------+------+-----+---------+----------------+
| addressid | int(11) | NO | PRI | NULL | auto_increment |
| addressdetail | varchar(255) | YES | | NULL | |
+---------------+--------------+------+-----+---------+----------------+
mysql> desc person_11pkboth;
+----------+--------------+------+-----+---------+-------+
| 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:40 (QP5 v5.50) */
CREATE TABLE `address_11pkboth` (
`addressid` int(11) NOT NULL auto_increment,
`addressdetail` varchar(255) default NULL,
PRIMARY KEY (`addressid`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=gbk;
/* Formatted on 2007/08/22 14:41 (QP5 v5.50) */
CREATE TABLE `person_11pkboth` (
`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;
五、映射方法:
OneToOnePKBothPerson.hbm.xml
<span style="color:#000000;"><hibernate-mapping> <class name="com.bean.Person11pkboth" table="PERSON_11pkboth"> <id name="personid" type="java.lang.Integer"> <column name="id" /> <generator class="identity" /> </id> <property name="name" type="java.lang.String"> <column name="name" length="24" not-null="true"> <comment>姓名</comment> </column> </property> <property name="age" /> <!-- cascade="all":在保存person11pkboth对象的时候,级联保存person11pkboth对象关联的address11pkboth对象 --> <one-to-one name="address11pkboth" cascade="all" /> </class> </hibernate-mapping></span>
OneToOnePKBothAddress.hbm.xml
<span style="color:#000000;"><hibernate-mapping> <class name="com.bean.Address11pkboth" table="ADDRESS_11pkboth" catalog="HibernateMapping"> <id name="addressid" type="java.lang.Integer"> <column name="id" /> <!-- class="foreign": 一对一主键映射中,使用另外一个相关联的对象的标识符 --> <generator class="foreign"> <param name="property">person11pkboth</param> </generator> </id> <property name="addressdetail" type="java.lang.String"> <column name="addressdetail" length="120" not-null="true"> <comment>详细地址</comment> </column> </property> <!-- 表示在address表存在一个外键约束,外键参考相关联的表person --> <one-to-one name="person11pkboth" constrained="true" /> </class> </hibernate-mapping></span>
六、测试
<span style="color:#000000;">public class Test_11pkboth {@Testpublic void test_11pkboth(){Person11pkboth person11pkboth = new Person11pkboth();person11pkboth.setName("刘大");person11pkboth.setAge(26); Address11pkboth address11pkboth = new Address11pkboth(); address11pkboth.setAddressdetail("XX街X号"); person11pkboth.setAddress11pkboth(address11pkboth); address11pkboth.setPerson11pkboth(person11pkboth); Session session = HibernateUtil.getCurrentSession(); Transaction tx = session.beginTransaction(); session.save(person11pkboth); session.save(address11pkboth); tx.commit(); HibernateUtil.closeSession();}}</span>
0 0
- Hibernate关联之一对一主键双向关联
- Hibernate 一对一主键双向关联
- Hibernate 一对一主键双向关联
- Hibernate 一对一主键双向关联
- Hibernate一对一主键双向关联
- hibernate一对一主键双向关联
- hibernate一对一主键双向关联
- Hibernate:一对一双向主键关联
- Hibernate 一对一主键双向关联
- Hibernate 一对一主键双向关联
- hibernate映射关系之一对一双向主键关联
- Hibernate之对象关系映射05一对一双向主键关联
- Hibernate XML一对一主键关联 单向+双向
- Hibernate 一对一主键单向、双向关联
- 一个Hibernate一对一主键双向关联实例
- hibernate一对一双向主键关联_Annotation
- hibernate一对一双向主键关联_XML
- hibernate一对一主键关联映射双向
- 调用webservice的方式解析
- 现Linux发行版分类
- ORA-12547: TNS:lost contact
- Android Fragment——与Activity生命周期的协调
- 设计模式-策略模式
- Hibernate关联之一对一主键双向关联
- 有趣的一种排序
- js限制文本框只能输入数字方法小结
- 关于文本输入框获取光标位置以及指定位置插入内容
- iOS监听 网络信号变化
- UIImagePickerController拍照与摄像
- itertools模块
- 关于get请求的缓存问题
- [Linux]查看启动信息方法