先说说cascade的取值:如果用save-update,只是对存储过程和更新过程级联,在删除数据的时候,引用表的外键为空,不做级联删除,而用delete的话时,在对父表操作时,同时级联所有的更新操作和删除操作,也就是说在删除父表时同时删除子表中引用父表pk做外键的项,但是和内存中不同步.all-delete-orphan可以和内存中数据做同步. 再说说应用场合:
BookType bookType = new BookType();
Book book1 = new Book();
book1.setType(bookType);
Book book2 = new Book();
book2.setType(bookType);
bookService.save(book1);
bookService.save(book2);
先创建一个 “书本类” 的实例,再创建 2本书,都是属于这本书,保存这2本书,结果出错。为什么?因为没有把BookTpye保存,所以那2本书的类别字段就不能保存了。这时使用cascade就可以保存book的时候自动保存booktype。 当然,还有另一种应用场合,就是booktype是预定义的,不是用户新创建的。这个时候无论book的增加还是删除,都不应当影响booktype,因此不能增加cascade属性。在appfuse当中,user的定义:
<set
name="roles"
table="user_role"
lazy="false"
cascade="save-update"
>
由于role都是预定义的,所以这里使用cascade并不妥当,某些应用场合可能会造成异常。(在role重新保存的时候,可能会报id相同无法保存)
分享到:
相关推荐
Hibernate中Cascade和inverse的区别,讲解的很详细
hibernate cascade 测试demo
Hibernate cascade (级联).docHibernate_cascade(级联).doc
\hibernate_配置cascade_及all-delete-orphan.doc
Hibernate中cascade和inverse应用
Hibernate中cascade与inverse属性详解
Hibernate中Inverse和Cascade的区别.html
深入理解hibernate many-to-one(多对一)及 cascade(级联).
于Hibernate中 cascade 与 inverse 的理解。 您买的Hibernate书是哪一本呢? 孙卫琴的精通Hibernate,还是 深入浅出Hibernate还是那本。。。 我是两本都买了,总体来说还可以,但是,有的地方讲的比较书面化,比如...
hibernate 级联(cascade和inverse)一对多,Jar包,数据库建表语句都好了,只要修改一下,数据库配置文件,就可以使用了,使用junit进行测试。
hibernate inverse和cascade的详细讲解,相当详细全面的对inverse和cascade区别和用法的讲解
NULL 博文链接:https://dreamzhong.iteye.com/blog/1273157
hibernate集合映射inverse和cascade详解.txt
haarcascades\haarcascade_eye.xml haarcascades\haarcascade_eye_tree_eyeglasses.xml haarcascades\haarcascade_frontalface_alt.xml haarcascades\haarcascade_frontalface_alt2.xml haarcascades\haar...
inverse Hibernate_级联关系说明_-_关于cascade和inverse的用法
hibernate中一对一,一对多,多对多关系的配置,延迟加载,cascade,inverse hibernate查询方式概述,HQL查询,QBC查询,分页,结果集封装方式 ,高级查询 查询的优化,一级缓存,二级缓存,批量查询,注解方式
Hibernate fetch lazy cascade inverse 关键字
Hibernate中cascade和inverse的相关
open人脸识别分类器,haarcascades包括:............\haarcascade_eye.xml............\haarcascade_eye_tree_eyeglasses.xml............\haarcascade_frontalface_alt2.xml............\haarcascade_mcs_eyepair_...