两个类:
Category: 表示新闻的栏目
News: 表示新闻.
现在要在删除一个新闻栏目时,级联的删除News中categoryId等于即将要删除的这个栏目的id.
配置如下:
Category.xml<hibernate-mapping package="com.lto.scfo.model.po">
<class name="Category" table="TB_CATEGORY" schema="LZBANK">
<id name="categoryId" type="long">
<column name="CATEGORYID" length="10" />
<generator class="sequence" >
<param name="sequence">SEQ_CATEGORY_CATEGORYID</param>
</generator>
</id>
<property name="categoryName" type="java.lang.String">
<column name="CATEGORYNAME" length="50" />
</property>
<property name="parentId" type="long">
<column name="PARENTID" length="10" />
</property>
<property name="isDisplay" type="java.lang.String">
<column name="ISDISPLAY" length="1" />
</property>
<property name="companyId" type="java.lang.String">
<column name="COMPANYID" length="10" />
</property>
<set name="newses" inverse="true" lazy="false" cascade="all">
<key on-delete="cascade">
<column name="CATEGORYID" length="10" />
</key>
<one-to-many class="News" />
</set>
</class>
</hibernate-mapping>
News.xml<hibernate-mapping package="com.lto.scfo.model.po">
<class name="News" table="TB_NEWS" schema="LZBANK">
<id name="newsId" type="long">
<column name="NEWSID" length="10" />
<generator class="sequence">
<param name="sequence">SEQ_NEWS_NEWSID</param>
</generator>
</id>
<many-to-one name="contentTypeId" class="ContentType" fetch="select" >
<column name="CONTENTTYPEID" length="10" />
</many-to-one>
<many-to-one name="categoryId" class="Category" fetch="select" insert="false">
<column name="CATEGORYID" length="10" />
</many-to-one>
<property name="title" type="java.lang.String">
<column name="TITLE" length="100" />
</property>
<property name="shortTitle" type="java.lang.String">
<column name="SHORTTITLE" length="50" />
</property>
<property name="summery" type="java.lang.String">
<column name="SUMMERY" />
</property>
<property name="author" type="java.lang.String">
<column name="AUTHOR" length="20" />
</property>
<property name="spokesmanId" type="java.lang.String">
<column name="SPOKESMANID" length="10" />
</property>
<property name="releaseDate" type="java.lang.String">
<column name="RELEASEDATE" length="14" />
</property>
<property name="content" type="com.lto.scfo.core.util.StringClobType">
<column name="CONTENT" />
</property>
<property name="auditState" type="java.lang.String">
<column name="AUDITSTATE" length="1" />
</property>
<property name="auditOption" type="java.lang.String">
<column name="AUDITOPTION" />
</property>
</class>
</hibernate-mapping>
在删除category时,不会级联的删除News,而是报错(外键约束).
Category: 表示新闻的栏目
News: 表示新闻.
现在要在删除一个新闻栏目时,级联的删除News中categoryId等于即将要删除的这个栏目的id.
配置如下:
Category.xml<hibernate-mapping package="com.lto.scfo.model.po">
<class name="Category" table="TB_CATEGORY" schema="LZBANK">
<id name="categoryId" type="long">
<column name="CATEGORYID" length="10" />
<generator class="sequence" >
<param name="sequence">SEQ_CATEGORY_CATEGORYID</param>
</generator>
</id>
<property name="categoryName" type="java.lang.String">
<column name="CATEGORYNAME" length="50" />
</property>
<property name="parentId" type="long">
<column name="PARENTID" length="10" />
</property>
<property name="isDisplay" type="java.lang.String">
<column name="ISDISPLAY" length="1" />
</property>
<property name="companyId" type="java.lang.String">
<column name="COMPANYID" length="10" />
</property>
<set name="newses" inverse="true" lazy="false" cascade="all">
<key on-delete="cascade">
<column name="CATEGORYID" length="10" />
</key>
<one-to-many class="News" />
</set>
</class>
</hibernate-mapping>
News.xml<hibernate-mapping package="com.lto.scfo.model.po">
<class name="News" table="TB_NEWS" schema="LZBANK">
<id name="newsId" type="long">
<column name="NEWSID" length="10" />
<generator class="sequence">
<param name="sequence">SEQ_NEWS_NEWSID</param>
</generator>
</id>
<many-to-one name="contentTypeId" class="ContentType" fetch="select" >
<column name="CONTENTTYPEID" length="10" />
</many-to-one>
<many-to-one name="categoryId" class="Category" fetch="select" insert="false">
<column name="CATEGORYID" length="10" />
</many-to-one>
<property name="title" type="java.lang.String">
<column name="TITLE" length="100" />
</property>
<property name="shortTitle" type="java.lang.String">
<column name="SHORTTITLE" length="50" />
</property>
<property name="summery" type="java.lang.String">
<column name="SUMMERY" />
</property>
<property name="author" type="java.lang.String">
<column name="AUTHOR" length="20" />
</property>
<property name="spokesmanId" type="java.lang.String">
<column name="SPOKESMANID" length="10" />
</property>
<property name="releaseDate" type="java.lang.String">
<column name="RELEASEDATE" length="14" />
</property>
<property name="content" type="com.lto.scfo.core.util.StringClobType">
<column name="CONTENT" />
</property>
<property name="auditState" type="java.lang.String">
<column name="AUDITSTATE" length="1" />
</property>
<property name="auditOption" type="java.lang.String">
<column name="AUDITOPTION" />
</property>
</class>
</hibernate-mapping>
在删除category时,不会级联的删除News,而是报错(外键约束).
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货