热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

hibernate级联删除

配置文件和pojo类如下:Xml代码

配置文件和pojo类如下:

 

Xml代码 
  1. xml version="1.0" encoding="utf-8"?>  
  2. "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">  
  3.   
  4. <hibernate-mapping>  
  5.     <class name&#61;"com.hotel.dao.Movietype" table&#61;"movietype" catalog&#61;"hotelfidelio">  
  6.         <id name&#61;"id" type&#61;"java.lang.Integer">  
  7.             <column name&#61;"id" />  
  8.             <generator class&#61;"native">generator>  
  9.         id>  
  10.         <property name&#61;"name" type&#61;"java.lang.String">  
  11.             <column name&#61;"name" length&#61;"60" not-null&#61;"true" />  
  12.         property>  
  13.         <property name&#61;"field1" type&#61;"java.lang.String">  
  14.             <column name&#61;"field1" length&#61;"20" />  
  15.         property>  
  16.         <set name&#61;"movies"   
  17.           table&#61;"movie"  
  18.           inverse&#61;"true"  
  19.           lazy&#61;"false"  
  20.           cascade&#61;"all">  
  21.          <key column&#61;"id_movietype">key>  
  22.          <one-to-many class&#61;"com.hotel.dao.Movie"/>  
  23.         set>  
  24.     class>  
  25. hibernate-mapping>  

 

 

 

 

 

Xml代码 
  1. xml version&#61;"1.0" encoding&#61;"utf-8"?>  
  2. "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">  
  3.   
  4. <hibernate-mapping>  
  5.     <class name&#61;"com.hotel.dao.Movie" table&#61;"movie" catalog&#61;"hotelfidelio">  
  6.         <id name&#61;"id" type&#61;"java.lang.Integer">  
  7.             <column name&#61;"id" />  
  8.             <generator class&#61;"native">generator>  
  9.         id>  
  10.         <property name&#61;"moviename" type&#61;"java.lang.String">  
  11.             <column name&#61;"moviename" length&#61;"200" not-null&#61;"true" />  
  12.         property>  
  13.         <property name&#61;"movienameSys" type&#61;"java.lang.String">  
  14.             <column name&#61;"moviename_sys" length&#61;"300" not-null&#61;"true" unique&#61;"true" />  
  15.         property>  
  16.         <property name&#61;"director" type&#61;"java.lang.String">  
  17.             <column name&#61;"director" length&#61;"200" />  
  18.         property>  
  19.         <property name&#61;"impersonator" type&#61;"java.lang.String">  
  20.             <column name&#61;"impersonator" length&#61;"200" />  
  21.         property>  
  22.         <property name&#61;"charge" type&#61;"java.lang.Double">  
  23.             <column name&#61;"charge" precision&#61;"22" scale&#61;"0" not-null&#61;"true" />  
  24.         property>  
  25.         <property name&#61;"intro" type&#61;"java.lang.String">  
  26.             <column name&#61;"intro" length&#61;"16277215" />  
  27.         property>  
  28.         <property name&#61;"imgsrc" type&#61;"java.lang.String">  
  29.             <column name&#61;"imgsrc" length&#61;"300" />  
  30.         property>  
  31.         <property name&#61;"field1" type&#61;"java.lang.String">  
  32.             <column name&#61;"field1" length&#61;"20" />  
  33.         property>  
  34.         <property name&#61;"field2" type&#61;"java.lang.String">  
  35.             <column name&#61;"field2" length&#61;"20" />  
  36.         property>  
  37.     <property name&#61;"idmovietype" type&#61;"java.lang.Integer">  
  38.         <column name&#61;"id_movietype" precision&#61;"3" scale&#61;"0" not-null&#61;"true" />  
  39.     property>  
  40.     <many-to-one   
  41.          name&#61;"movietype"  
  42.          class&#61;"com.hotel.dao.Movietype"  
  43.          column&#61;"id_movietype"  
  44.          insert&#61;"false"  
  45.          update&#61;"false"  
  46.              outer-join&#61;"auto"  
  47.          fetch&#61;"select"  
  48.              access&#61;"property"  
  49.              not-null&#61;"true"  
  50.              lazy&#61;"false"  
  51.          >  
  52.     many-to-one>  
  53.     class>  
  54. hibernate-mapping>  

 

 

网上很多帖子都说cascade&#61;"all" 就可以级联删除&#xff0c;但是我这里怎么设置都没法成功&#xff0c;观察输出日志

只有  movietype的删除 sql&#xff1a;

 

Hibernate: delete from hotel.movietype where id&#61;? 

 

之后看到 arthur.3726 文章&#xff1a;http://arthur-3726.javaeye.com/blog/422877 发现只有用hibernate自带的事物执行语句才能执行级联删除&#xff0c;觉得有可能不是配置文件的问题&#xff0c;而是java代码的问题&#xff1a;

 

Eclipse配置完ssh后&#xff0c;自动生成的代码&#xff1a;

 

 

Java代码 
  1. public void delete(Movietype persistentInstance) {  
  2.     log.debug("deleting Movietype instance");  
  3.     try {  
  4.         getHibernateTemplate().delete(persistentInstance);  
  5.         log.debug("delete successful");  
  6.     } catch (RuntimeException re) {  
  7.         log.error("delete failed", re);  
  8.         throw re;  
  9.     }  
  10. }  

 

 

改成直接由hibernate的session来执行&#xff1a;

 

 

Java代码 
  1. public void delete_cascade(final Movietype persistentInstance) {  
  2.     log.debug("deleting Movietype instance");  
  3.     try {  
  4.         getHibernateTemplate().executeFind(new HibernateCallback() {  
  5.             public Object doInHibernate(Session s)  
  6.                     throws HibernateException, SQLException {  
  7.                 s.setFlushMode(FlushMode.AUTO);  
  8.                 s.beginTransaction().begin();  
  9.                 s.delete(persistentInstance);  
  10.                 s.beginTransaction().commit();  
  11.                 s.close();  
  12.                 return null;  
  13.             }  
  14.         });  
  15.     } catch (RuntimeException re) {  
  16.         log.error("find all failed", re);  
  17.         throw re;  
  18.     }  
  19. }  

 

 测试删除movietype&#xff0c;输出sql语句&#xff1a;

 

Hibernate: delete from hotelfidelio.movie where id&#61;?

Hibernate: delete from hotelfidelio.movietype where id&#61;?

 

删除成功。

 

参考&#xff1a;http://arthur-3726.javaeye.com/blog/422877

         http://docs.jboss.org/hibernate/stable/core/reference/en/html_single/#objectstate-transitive

         http://docs.jboss.org/hibernate/stable/core/reference/en/html/objectstate.html#objectstate-transitive

         http://docs.jboss.org/hibernate/stable/core/reference/en/html/example-parentchild.html

转:https://www.cnblogs.com/panjun-Donet/archive/2010/07/29/1787607.html



推荐阅读
  • 如何实现JDK版本的切换功能,解决开发环境冲突问题
    本文介绍了在开发过程中遇到JDK版本冲突的情况,以及如何通过修改环境变量实现JDK版本的切换功能,解决开发环境冲突的问题。通过合理的切换环境,可以更好地进行项目开发。同时,提醒读者注意不仅限于1.7和1.8版本的转换,还要适应不同项目和个人开发习惯的需求。 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • eclipse学习(第三章:ssh中的Hibernate)——11.Hibernate的缓存(2级缓存,get和load)
    本文介绍了eclipse学习中的第三章内容,主要讲解了ssh中的Hibernate的缓存,包括2级缓存和get方法、load方法的区别。文章还涉及了项目实践和相关知识点的讲解。 ... [详细]
  • C++字符字符串处理及字符集编码方案
    本文介绍了C++中字符字符串处理的问题,并详细解释了字符集编码方案,包括UNICODE、Windows apps采用的UTF-16编码、ASCII、SBCS和DBCS编码方案。同时说明了ANSI C标准和Windows中的字符/字符串数据类型实现。文章还提到了在编译时需要定义UNICODE宏以支持unicode编码,否则将使用windows code page编译。最后,给出了相关的头文件和数据类型定义。 ... [详细]
  • 本文介绍了如何清除Eclipse中SVN用户的设置。首先需要查看使用的SVN接口,然后根据接口类型找到相应的目录并删除相关文件。最后使用SVN更新或提交来应用更改。 ... [详细]
  • 使用eclipse创建一个Java项目的步骤
    本文介绍了使用eclipse创建一个Java项目的步骤,包括启动eclipse、选择New Project命令、在对话框中输入项目名称等。同时还介绍了Java Settings对话框中的一些选项,以及如何修改Java程序的输出目录。 ... [详细]
  • Activiti7流程定义开发笔记
    本文介绍了Activiti7流程定义的开发笔记,包括流程定义的概念、使用activiti-explorer和activiti-eclipse-designer进行建模的方式,以及生成流程图的方法。还介绍了流程定义部署的概念和步骤,包括将bpmn和png文件添加部署到activiti数据库中的方法,以及使用ZIP包进行部署的方式。同时还提到了activiti.cfg.xml文件的作用。 ... [详细]
  • 本文介绍了三种方法来实现在Win7系统中显示桌面的快捷方式,包括使用任务栏快速启动栏、运行命令和自己创建快捷方式的方法。具体操作步骤详细说明,并提供了保存图标的路径,方便以后使用。 ... [详细]
  • Android系统移植与调试之如何修改Android设备状态条上音量加减键在横竖屏切换的时候的显示于隐藏
    本文介绍了如何修改Android设备状态条上音量加减键在横竖屏切换时的显示与隐藏。通过修改系统文件system_bar.xml实现了该功能,并分享了解决思路和经验。 ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • Java程序设计第4周学习总结及注释应用的开发笔记
    本文由编程笔记#小编为大家整理,主要介绍了201521123087《Java程序设计》第4周学习总结相关的知识,包括注释的应用和使用类的注释与方法的注释进行注释的方法,并在Eclipse中查看。摘要内容大约为150字,提供了一定的参考价值。 ... [详细]
  • HashMap的相关问题及其底层数据结构和操作流程
    本文介绍了关于HashMap的相关问题,包括其底层数据结构、JDK1.7和JDK1.8的差异、红黑树的使用、扩容和树化的条件、退化为链表的情况、索引的计算方法、hashcode和hash()方法的作用、数组容量的选择、Put方法的流程以及并发问题下的操作。文章还提到了扩容死链和数据错乱的问题,并探讨了key的设计要求。对于对Java面试中的HashMap问题感兴趣的读者,本文将为您提供一些有用的技术和经验。 ... [详细]
author-avatar
霦槟哊禮kc
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有