关闭

关闭

关闭

封号提示

内容

首页 Hibernate实现级联删除.doc

Hibernate实现级联删除.doc

Hibernate实现级联删除.doc

上传者: sldaflk 2011-06-28 评分 0 0 0 0 0 0 暂无简介 简介 举报

简介:本文档为《Hibernate实现级联删除doc》,可适用于IT/计算机领域,主题内容包含Hibernate实现级联删除      版权所有,转载请注明出处zhyiwwwcom我的使用背景:       有新闻和新闻类型一条新闻只能属于一符等。

Hibernate实现级联删除      版权所有,转载请注明出处zhyiwwwcom我的使用背景:       有新闻和新闻类型一条新闻只能属于一个类型一种新闻类型可以对应多条新闻。       在数据库中新闻受新闻类型外键约束并可以级联删除       在Hibernate中实现级联删除       jkakfl (一)创建数据库表和关系DROPTABLENewsTypeCREATETABLENewsType(TypeIDNUMBER()PRIMARYKEYNOT,TypeNameVARCHAR()NOT,DirNameVARCHAR()NOT,TemplateNameVARCHAR()NOT)DROPSEQUENCENEWSTYPESEQCREATESEQUENCENEWSTYPESEQINCREMENTBYSTARTWITH DROPTABLENewsCREATETABLENews(NewsIDNUMBER()PRIMARYKEYNOT,TypeIDNUMBER()NOT,TitleVARCHAR()NOT,HitCountNUMBER()DEFAULTNOT,IssuseDateDATENOT,DeployerIDNUMBER()NOT,OriginVARCHAR()NOT,URLVARCHAR()NOT,KEYWORDSVARCHAR(),PriorityNUMBER()DEFAULTNOT,SpecialVARCHAR(),DescriptionVARCHAR(),AuthorVARCHAR(),TopicVARCHAR())DROPSEQUENCENEWSSEQCREATESEQUENCENEWSSEQINCREMENTBYSTARTWITH 在oralce中设置数据表的约束关系如下图:      (二)实现数据表到POJO的映射映射类我们略去此处主要显示配置文件        Newshbmxml<xmlversion=""encoding=""><!DOCTYPEhibernatemappingPUBLIC"HibernateHibernateMappingDTDEN""http:hibernatesourceforgenethibernatemappingdtd"><!DONOTEDIT:Thisisageneratedfilethatissynchronized><!byMyEclipseHibernatetoolintegration><!CreatedFriNov::CST><hibernatemappingpackage="comscenechinavrmodel"><classname="News"table="NEWS"lazy="false"><idname="newsid"column="NEWSID"type="javalangLong"><generatorclass="sequence"><paramname="sequence">NEWSSEQ<param><generator><id><propertyname="typeid"column="TYPEID"type="javalangLong"not="true"><propertyname="title"column="TITLE"type="javalangString"not="true"><propertyname="hitcount"column="HITCOUNT"type="javalangLong"not="true"><propertyname="issusedate"column="ISSUSEDATE"type="javautilDate"not="true"><propertyname="deployerid"column="DEPLOYERID"type="javalangLong"not="true"><propertyname="origin"column="ORIGIN"type="javalangString"not="true"><propertyname="url"column="URL"type="javalangString"not="true"><propertyname="keywords"column="KEYWORDS"type="javalangString"><propertyname="priority"column="PRIORITY"type="javalangLong"not="true"><propertyname="special"column="SPECIAL"type="javalangString"><propertyname="description"column="DESCRIPTION"type="javalangString"><propertyname="author"column="AUTHOR"type="javalangString"><propertyname="topic"column="TOPIC"type="javalangString"><setname="newsset"cascade="all"inverse="true"lazy="false"orderby="NEWSDETIALID"table="Newsdetials"><keycolumn="newsid"><onetomanyclass="Newsdetials"><set><setname="picset"cascade="all"inverse="true"lazy="false"table="Picture"><keycolumn="newsid"><onetomanyclass="Picture"><set><manytoonename="newstype"column="TYPEID"entityname="commodelNewstype"insert="false"update="false"><class><hibernatemapping>         Newstypehbmxml<xmlversion=""><!DOCTYPEhibernatemappingPUBLIC"HibernateHibernateMappingDTDEN""http:hibernatesourceforgenethibernatemappingdtd"><hibernatemapping><!CreatedbytheMiddlegenHibernateplugin http:bossbekknobossmiddlegenhttp:hibernatesourceforgenet><classname="comscenechinavrmodelNewstype"table="NEWSTYPE"lazy="false"><idname="typeid"type="javalangLong"column="TYPEID"><generatorclass="assigned"><id><propertyname="typename"type="javalangString"column="TYPENAME"not="true"length=""><propertyname="dir"type="javalangString"column="DIRNAME"not="true"length=""><propertyname="templatename"type="javalangString"column="TEMPLATENAME"not="true"length=""><!associations><setname="news"cascade="alldeleteorphan"inverse="true"><keycolumn="TYPEID"><onetomanyclass="commodelNews"><set><class><hibernatemapping> 其实这是个双向以对多关系。 (三)在DAO中实现级联删除删除新闻类型记录daogetNewsTypeDAO()deleteObjects(typeIDs)typeID是新闻类型的主键执行此操作将会删除所有此新闻类型的新闻。news是一个Set类型的变量用来存放此类型的所有的新闻。(四)删除时遇到的问题在数据库中如果设置了约束关系那么一定要允许级联删除否则你在执行删除时会抛出异常。如果我们的数据库关系设置如下:   画圈的那个选项没有选上的话那么我们在执行的时候就会抛出如下的异常:::ERRORhttpProcessor(JDBCExceptionReporterjava:ORA:违反完整约束条件(SCNEWSTYPERELATIONS)已找到子记录日志 rghibernateexceptionConstraintViolationException:couldnotexecuteupdateqeryatorghibernateexceptionSQLStateConverterconvert(SQLStateConverterjva:)atorghibernateexceptionJDBCExceptionHelperconvert(JDBCExceptionHelprjava:)atorghibernatehqlastexecBasicExecutorexecute(BasicExecutorjava:) 问题的关键在如下两点:      数据库中要允许数据表的级联删除      在映射文件中要将级联删除配置正确  

用户评论(0)

0/200

精彩专题

上传我的资料

每篇奖励 +2积分

资料评价:

/6
1下载券 下载 加入VIP, 送下载券

意见
反馈

立即扫码关注

爱问共享资料微信公众号

返回
顶部