温暖洁森

勇敢做自己

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  13 随笔 :: 1 文章 :: 70 评论 :: 0 Trackbacks
最近使用annotation做hibernate映射,有两张表人员(Person)表 和医院(Hospital)表,人员表和医院表是ManyToOne,业务只需要从人员表出发设置不同医院,所以是单向的ManyToOne

在Person表关系定义如下:
@ManyToOne(cascade = { CascadeType.PERSIST,CascadeType.MERGE})
@JoinColumn(name = "HOSPITAL_ID")

但我在后台方法测试时,如果医院信息修改或新建,保存到人员表中,医院信息不会级联更新或新增,级联关系不起作用


我又用hbm.xml方式实验了一下,在Person端加上cascade="save-update",如果医院信息修改或新增,保存人员信息会级联更新或新增到医院表,方式如下:
<many-to-one name="hospital" class="com.Hospital" fetch="select" lazy="false" not-null="true" cascade="save-update">
<column name="HOSPITAL_ID" />
</many-to-one>



后来经别人指点发现我引用的包是
import javax.persistence.CascadeType;
import javax.persistence.Cascade;

而应该使用hibernate annotation包
import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType;

Person表的关联关系应改成
 @ManyToOne()
 @Cascade(value={CascadeType.SAVE_UPDATE})
 @JoinColumn(name = "HOSPITAL_ID")
这样级联更新和新增功能就成功了
posted on 2008-01-03 16:24 harry520 阅读(3305) 评论(3)  编辑  收藏 所属分类: J2EE

评论

# re: hibernate annotation关联关系问题解决 2008-01-03 17:40 小立飞刀
good  回复  更多评论
  

# re: hibernate annotation关联关系问题解决 2008-01-04 09:20 itVincent
不清楚你的hibernate是什么版本,我用的3.3就是用JPA的包的  回复  更多评论
  

# re: hibernate annotation关联关系问题解决[未登录] 2008-01-04 09:32 harry520
我用的也是hibernate annotation 3.3,把其中ejb3-persistence.jar也引入,目前都是最新版本,这个问题确实是存在  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航: