Java琐事
-I am not alone
posts - 54, comments - 30, trackbacks - 0, articles - 1
BlogJava
::
首页
::
新随笔
::
联系
::
聚合
::
管理
hibernate的单向级联删除问题
Posted on 2010-10-06 18:38
石子路口
阅读(2676)
评论(3)
编辑
收藏
所属分类:
网络教学资源平台
对于两个不同的表,在hibernate中可以设置它们的多对多关系,一对一关系或者是多对一关系。而且还有单向和双向的问题。这些都是学hibernate必学的,这里不再重复。我只说下级联删除时应注意的问题,多对一单向关系到底能不能实现级联?
假设存在两个表:栏目(lm)表,内容(mknr)表;它们属于多对一的关系,即栏目可以包括多个内容。则有以下方式:
栏目表对应的pojo类:Lm.java
public
class
Lm
implements
java.io.Serializable
{
//
栏目id
private
int
id;
private
String name;
private
Set mknr
=
new
HashSet();
//
getter和setter方法
}
栏目表对应的映射文件:Lm.hbm.xml
<?
xml version="1.0" encoding="UTF-8"
?>
<!
DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"
>
<
hibernate-mapping
>
<
class
catalog
="eteares"
name
="cn.edu.ujn.wsjx.model.Lm"
table
="lm"
>
<
id
name
="id"
type
="java.lang.Integer"
>
<
column
name
="id"
/>
<
generator
class
="identity"
/>
</
id
>
<
property
name
="name"
type
="java.lang.String"
>
<
column
length
="20"
name
="name"
/>
<
set
name
="mknr"
inverse
="false"
cascade
="all"
>
<
key
column
="lmId"
/>
<
one-to-many
class
="cn.edu.ujn.wsjx.model.Mknr"
/>
</
set
>
</
class
>
</
hibernate-mapping
>
内容表对应的pojo类:Mknr.java
public
class
Mknr
implements
java.io.Serializable
{
private
int
id;
private
String title;
private
String content;
private
Lm lm;
//
getter和setter方法
}
内容表对应的映射文件:Mknr.hbm.xml
<?
xml version="1.0" encoding="utf-8"
?>
<!
DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"
>
<
hibernate-mapping
>
<
class
name
="cn.edu.ujn.wsjx.model.Mknr"
table
="mknr"
catalog
="eteares"
>
<
id
name
="id"
type
="java.lang.Integer"
>
<
column
name
="id"
/>
<
generator
class
="identity"
/>
</
id
>
<
property
name
="title"
type
="java.lang.String"
>
<
column
name
="title"
length
="100"
/>
</
property
>
<
property
name
="content"
type
="java.lang.String"
>
<
column
name
="content"
length
="16777215"
/>
</
property
>
<
many-to-one
name
="lm"
class
="cn.edu.ujn.wsjx.model.Lm"
lazy
="false"
>
<
column
name
="lmId"
/>
</
many-to-one
>
</
class
>
</
hibernate-mapping
>
从上面的代码可以得知,这种设置方式属于一对多双向关联,为什么不设置成多对一单向关联呢(把Lm.java中的mknr属性去掉),之前我就是这么设置,但每当删除lm中的记录时,删除就会出现外键参考的错误,这是因为mknr中有记录外键到了lm表中,而删除时因为单向关联无法通过lm找到mknr
所以要使用级联删除,就要设置成双向关联!
评论
#
re: hibernate的单向级联删除问题
回复
更多评论
2010-10-08 09:25 by
窝窝影视
学习了
#
re: hibernate的单向级联删除问题
回复
更多评论
2010-11-04 11:16 by
jndxjing
我都百度到你这来了。。。哈哈
#
re: hibernate的单向级联删除问题
回复
更多评论
2010-11-04 17:11 by
syg
@jndxjing
幸会……幸会
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
知识库
C++博客
博问
管理
相关文章:
11月21日-servlet,listener调用spring中bean
11月11日进度安排
11月9日说明
11月4日工作日志
11月3日工作日志
11月2日工作日志
11月1日工作总结及说明
java处理excel
发现json(10月24日)
10月18日 项目日志
Powered by:
BlogJava
Copyright © 石子路口
日历
<
2010年11月
>
日
一
二
三
四
五
六
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
7
8
9
10
11
常用链接
我的随笔
我的评论
我的参与
最新评论
留言簿
给我留言
查看公开留言
查看私人留言
随笔分类
ajax
flex(1)
hibernate
Java(3)
spring
struts2(2)
工作流(6)
数据库(1)
校外项目(2)
网络教学资源平台(31)
网页制作(5)
记录(5)
设计模式(1)
随笔档案
2011年5月 (3)
2011年4月 (5)
2011年3月 (3)
2010年11月 (9)
2010年10月 (24)
2010年9月 (10)
搜索
最新评论
1. re: flex3的在myeclipse6.5中部署及第一个实例
sdfsdf
--safd
2. re: 学习大杂烩
@黑蝙蝠
楼主自己都没有搞醒豁,TA咋个好意思分享他自己的经验和成果嘛!
--ocaicai
3. re: 学习大杂烩
可以分享学习成果么~~
--黑蝙蝠
4. re: 学习大杂烩
楼主的知识面真够广的...膜拜中。。。
--http://ask.zhongguoren.me
5. re: 4月22日
这个是关于什么的文章
--新能源
阅读排行榜
1. "java.net.BindException: Cannot assign requested address"竟是瑞星防火墙所为(4185)
2. struts2中select标签的用法总结(3842)
3. 关于myeclipse和mysql中文乱码问题(10月11日)(2775)
4. hibernate的单向级联删除问题(2676)
5. FCKeditor支持jsp的配置(myeclipse工具)(2578)
评论排行榜
1. 小心数据库字段与关键字重复问题(4)
2. "java.net.BindException: Cannot assign requested address"竟是瑞星防火墙所为(3)
3. 页面中有几个form(3)
4. 学习大杂烩(3)
5. java处理excel(3)