- 浏览: 35149 次
- 性别:
文章分类
最新评论
-
开源人:
...
简约之美,JQuery之进度条插件 -
zhubo123:
楼主. 有个问题想请教你.我试着做了一遍. 可是为什么setP ...
JAVA文件上传(带进度条)
这种情况很少见,但Hibernate同样允许采用连接表关联1-1.有连接表的1-1同样只需要将N-1的many-to-one元素增加unique="true"属性即可。
|
|
一、模型介绍
|
|
一个人(Person)对应多个地址(Address),比如家庭地址、公司地址。
|
|
二、实体(省略getter、setter方法)
|
|
public class Person1nfk implements Serializable {
|
private int personid;
|
private String name;
|
private int age;
|
private Set addresses=new HashSet();
|
|
public class Address1nfk implements Serializable {
|
private int addressid;
|
private String addressdetail;
|
|
三、表模型
|
|
mysql> desc address_1nfk;
|
+---------------+--------------+------+-----+---------+----------------+
|
| Field | Type | Null | Key | Default | Extra |
|
+---------------+--------------+------+-----+---------+----------------+
|
| addressid | int(11) | NO | PRI | NULL | auto_increment |
|
| addressdetail | varchar(255) | YES | | NULL | |
|
| personid | int(11) | YES | MUL | NULL | |
|
+---------------+--------------+------+-----+---------+----------------+
|
|
mysql> desc person_1nfk;
|
+----------+--------------+------+-----+---------+----------------+
|
| Field | Type | Null | Key | Default | Extra |
|
+----------+--------------+------+-----+---------+----------------+
|
| personid | int(11) | NO | PRI | NULL | auto_increment |
|
| name | varchar(255) | YES | | NULL | |
|
| age | int(11) | YES | | NULL | |
|
+----------+--------------+------+-----+---------+----------------+
|
|
四、生成的SQL脚本
|
|
/* Formatted on 2007/08/21 10:06 (QP5 v5.50) */
|
CREATE TABLE `address_1nfk` (
|
`addressid` int(11) NOT NULL auto_increment,
|
`addressdetail` varchar(255) default NULL,
|
`addresses` int(11) default NULL,
|
PRIMARY KEY (`addressid`),
|
KEY `FK9B93456DC08D1667` (`addresses`),
|
CONSTRAINT `FK9B93456DC08D1667` FOREIGN KEY (`addresses`) REFERENCES `person_1nfk` (`personid`)
|
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=gbk;
|
|
/* Formatted on 2007/08/21 10:07 (QP5 v5.50) */
|
CREATE TABLE `person_1nfk` (
|
`personid` int(11) NOT NULL auto_increment,
|
`name` varchar(255) default NULL,
|
`age` int(11) default NULL,
|
PRIMARY KEY (`personid`)
|
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=gbk;
|
|
|
五、映射方法:在实体类Person里面添加Address的集合,即可形成一对多关系。
|
<!--映射集合属性,关联到持久化类,inverse="false"表示主控端在Person1nfk端,lazy="false"表示不采用延迟加载-->
|
<set name="addresses"
|
table="ADDRESS_1nfk"
|
cascade="all"
|
>
|
<!--确定关联的外键列-->
|
<key column="personid"/>
|
<!--用以映射到关联类属性-->
|
<one-to-many class="com.lavasoft.dx._1_n_fk.Address1nfk"/>
|
</set>
|
|
<hibernate-mapping>
|
<class name="com.lavasoft.dx._1_n_fk.Person1nfk" table="PERSON_1nfk">
|
<id name="personid">
|
<generator class="identity"/>
|
</id>
|
<property name="name"/>
|
<property name="age"/>
|
<!--映射集合属性,关联到持久化类,inverse="false"表示主控端在Person1nfk端,lazy="false"表示不采用延迟加载-->
|
<set name="addresses"
|
table="ADDRESS_1nfk"
|
cascade="all"
|
>
|
<!--确定关联的外键列-->
|
<key column="personid"/>
|
<!--用以映射到关联类属性-->
|
<one-to-many class="com.lavasoft.dx._1_n_fk.Address1nfk"/>
|
</set>
|
</class>
|
</hibernate-mapping>
|
|
<hibernate-mapping>
|
<class name="com.lavasoft.dx._1_n_fk.Address1nfk" table="ADDRESS_1nfk">
|
<id name="addressid">
|
<generator class="identity"/>
|
</id>
|
<property name="addressdetail"/>
|
</class>
|
</hibernate-mapping>
|
|
|
六、测试方法
|
|
public class Test_1nfk {
|
public static void main(String[] args){
|
Address1nfk add1=new Address1nfk();
|
Address1nfk add2=new Address1nfk();
|
Person1nfk p=new Person1nfk();
|
|
add1.setAddressdetail("郑州市经三路");
|
add2.setAddressdetail("合肥市宿州路");
|
p.setName("wang");
|
p.setAge(30);
|
p.getAddresses().add(add1);
|
p.getAddresses().add(add2);
|
|
Session session= HibernateUtil.getCurrentSession();
|
Transaction tx=session.beginTransaction();
|
session.save(add1);
|
session.save(add2);
|
session.save(p);
|
tx.commit();
|
HibernateUtil.closeSession();
|
}
|
}
|
|
七、测试结果
|
|
1) :正常保存.
|
// session.save(add1);
|
// session.save(add2);
|
session.save(p);
|
Hibernate: insert into PERSON_1nfk (name, age) values (?, ?)
|
Hibernate: insert into ADDRESS_1nfk (addressdetail) values (?)
|
Hibernate: insert into ADDRESS_1nfk (addressdetail) values (?)
|
Hibernate: update ADDRESS_1nfk set personid=? where addressid=?
|
Hibernate: update ADDRESS_1nfk set personid=? where addressid=?
|
|
2) :正常保存.
|
session.save(add1);
|
session.save(add2);
|
session.save(p);
|
Hibernate: insert into ADDRESS_1nfk (addressdetail) values (?)
|
Hibernate: insert into ADDRESS_1nfk (addressdetail) values (?)
|
Hibernate: insert into PERSON_1nfk (name, age) values (?, ?)
|
Hibernate: update ADDRESS_1nfk set personid=? where addressid=?
|
Hibernate: update ADDRESS_1nfk set personid=? where addressid=?
|
|
3) :正常保存.
|
session.save(add1);
|
session.save(add2);
|
// session.save(p);
|
Hibernate: insert into ADDRESS_1nfk (addressdetail) values (?)
|
Hibernate: insert into ADDRESS_1nfk (addressdetail) values (?)
|
发表评论
-
Hibernate 多对多双向关联
2012-01-30 16:06 620一、模型介绍 多个人( ... -
Hibernate 一对多连接表双向关联
2012-01-30 16:06 546一、模型介绍 一个人( ... -
Hibernate 一对多外键双向关联
2012-01-30 16:08 606一、模型介绍 一个人( ... -
Hibernate 一对一连接表双向关联
2012-01-30 16:08 630一、模型介绍 一个人( ... -
Hibernate 一对一主键双向关联
2012-02-09 11:09 729一对一主键映射在一对一映射中还算是最为常用的。 一、模 ... -
Hibernate 一对一外键双向关联
2012-01-07 09:26 591一对一外键关联是一对多外键关联的特例,只是在多的一方加了 ... -
Hibernate 多对多单向关联
2012-01-07 08:52 603一、模型介绍 多个人(P ... -
Hibernate 多对一连接表单向关联
2012-01-07 08:52 649一、模型介绍 多个人( ... -
Hibernate 多对一外键单向关联
2012-01-07 08:52 587一、模型介绍 多个人( ... -
Hibernate 一对多连接表单向关联
2012-01-07 08:52 710一、模型介绍 一个人( ... -
Hibernate 一对一连接表单向关联
2012-01-06 15:14 609这种情况很少见,但Hibernate同样允许采用 ... -
Hibernate 一对一主键单向关联
2012-01-06 15:12 6101-1的关联可以基于主键关联,但基于主键关联的持久化 ... -
Hibernate 一对一外键单向关联
2012-01-06 15:08 611事实上,单向1-1与N-1的实质是相同的,1-1是N-1的特 ...
相关推荐
Hibernate 一对多外键单向关联 Hibernate 一对多连接表单向关联 Hibernate 多对一外键单向关联 Hibernate 多对一连接表单向关联 Hibernate 多对多单向关联 Hibernate 一对一外键双向关联 Hibernate 一对一主键双向...
│ ├─ 一对多外键单向关联 │ ├─ 一对多连接表单向关联 │ ├─ 多对一外键单向关联 │ ├─ 多对一连接表单向关联 │ └─ 多对多单向关联 └─双向关联 ├─ 一对一外键双向关联 ├─ 一对一主键双向关联 ├─...
NULL 博文链接:https://paladin1988.iteye.com/blog/1627597
NULL 博文链接:https://paladin1988.iteye.com/blog/1633417
hibernate一对多双向自连接关联映射 15 hibernate多对多关联映射(单向User---->Role) 19 hibernate多对多关联映射(双向User<---->Role) 20 Hibernate的继承关系 21 每棵继承树映射成一张表(hibernate_extends_1) 22 ...
一对多的基础上来测试单向多对一的关联 hibernate多对一的关联关系定义: 和单向一对多不同的是:一对多是在意的一方的一方定义set集合,在映射文件中 :单向多对一,简单很多在多的一方定义一的一方类的...
014 一对多关联映射 单向 015 一对多关联映射 双向 016 多对多关联映射 单向 017 多对多关联映射 双向 018 关联映射文件中标签中的 lazy(懒加载)属性 019 关联映射文件中集合标签中的 lazy(懒加载)属性 020 、单端...
通过在被拥有的实体端(owned entity)增加一个外键列来实现一对多单向关联是很少见的,也是不推荐的,建议通过一个联接表来实现这种关联(下面会讲到)。 @JoinColoumn批注来描述这种单向关联关系 @Entity Public class...
Hibernate 实体关联关系映射 学习总结 把一对一 一对多 单向 双向 主键 外键 链接表等讲的比较清楚
这种策略支持双向的一对多关联,但不支持 IDENTIFY 生成器策略,因为ID必须在多个表间共享。一旦使用就不能使用AUTO和IDENTIFY生成器。 每个类层次结构一张表 @Entity @Inheritance(strategy=InheritanceType....
7.4.1. 一对多(one to many) / 多对一(many to one) 7.4.2. 一对一(one to one) 7.5. 使用连接表的双向关联(Bidirectional associations with join tables) 7.5.1. 一对多(one to many) /多对一( many ...
7.5.1. 一对多(one to many) /多对一( many to one) 7.5.2. 一对一(one to one) 7.5.3. 多对多(many to many) 7.6. 更复杂的关联映射 8. 组件(Component)映射 8.1. 依赖对象(Dependent objects) ...
7.5.1. 一对多(one to many) /多对一( many to one) 7.5.2. 一对一(one to one) 7.5.3. 多对多(many to many) 7.6. 更复杂的关联映射 8. 组件(Component)映射 8.1. 依赖对象(Dependent objects) ...
7.4.1. 一对多(one to many) / 多对一(many to one) 7.4.2. 一对一(one to one) 7.5. 使用连接表的双向关联(Bidirectional associations with join tables) 7.5.1. 一对多(one to many) /多对一( many ...
7.5.1. 一对多(one to many) /多对一( many to one) 7.5.2. 一对一(one to one) 7.5.3. 多对多(many to many) 7.6. 更复杂的关联映射 8. 组件(Component)映射 8.1. 依赖对象(Dependent objects) 8.2. 在...
15.3.4 把多对多关联分解为两个一对多关联 15.4 小结 15.5 思考题 第16章 Hibernate的检索策略 16.1 Hibernate的检索策略简介 16.2 类级别的检索策略 16.2.1 立即检索 16.2.2 延迟检索 16.3 一对多...
8.4.1. 一对多(one to many) / 多对一(many to one) 8.4.2. 一对一(one to one) 8.5. 使用连接表的双向关联(Bidirectional associations with join tables) 8.5.1. 一对多(one to many) /多对一( many ...
一对多(one to many) /多对一( many to one) 7.5.2. 一对一(one to one) 7.5.3. 多对多(many to many) 7.6. 更复杂的关联映射 8. 组件(Component)映射 8.1. 依赖对象(Dependent objects) 8.2. 在...
7.4.1. 一对多(one to many) / 多对一(many to one) 7.4.2. 一对一(one to one) 7.5. 使用连接表的双向关联(Bidirectional associations with join tables) 7.5.1. 一对多(one to many) /多对一( many to ...