您的位置:首页 > 其它

Hibernate中cascade为all-delete-orphan与all的区别

2011-05-30 18:23 501 查看
HrStaffBaseInfo与HrStaffSocietyRelation为one to many关系。

若级联关系cascade设置为all,则通过hrStaffBaseInfo.removeHrStaffSocietyRelationDetail(relationId);只是使hrStaffSocietyRelation成为了一个孤儿,并不能将hrStaffSocietyRelation在数据库中对应的数据也被删除,但其他的新增、更新可以。但若级联关系cascade设置为all-delete-orpnan,则可以删除,且新增、更新亦可。

注:

all:所有情况下均进行级联操作。

all-delete-orpnan:当被关联对象失去宿主时,将其级联删除。

removeHrStaffSocietyRelationDetail函数:

/**

* remove a HrStaffSocietyRelation detail by relationId

* @param relationId

*/

public void
removeHrStaffSocietyRelationDetail(String relationId) {

for (HrStaffSocietyRelation hrStaffSocietyRelation :
getHrStaffSocietyRelations()) {

if
(hrStaffSocietyRelation.getRelationId().equals(relationId)) {

getHrStaffSocietyRelations().remove(hrStaffSocietyRelation);

break;

}

}

}

HrStaffBaseInfo的hbm:

<?xml version="1.0"?>

<!DOCTYPE hibernate-mapping PUBLIC

"-//Hibernate/Hibernate Mapping DTD 3.0//EN"

"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >

<hibernate-mapping>

<!--

Created by the Middlegen
Hibernate plugin 2.2
http://boss.bekk.no/boss/middlegen/ http://www.hibernate.org/
-->

<class

name="jp.co.yamaha_motor.xa01.common.entity.HrStaffBaseInfo"

table="HR_STAFF_BASE_INFO"

lazy="true"

>

<id

name="staffId"

type="java.lang.String"

column="STAFF_ID"

>

<generator class="assigned"
/>

</id>

<version

name="updateCounter"

type="java.lang.Integer"

column="UPDATE_COUNTER"

/>

<property

name="siteId"

type="java.lang.String"

column="SITE_ID"

not-null="true"

length="4"

/>

<property

name="staffCd"

type="java.lang.String"

column="STAFF_CD"

not-null="true"

length="20"

/>

<property

name="staffNm"

type="java.lang.String"

column="STAFF_NM"

not-null="true"

length="20"

/>

<property

name="englishNm"

type="java.lang.String"

column="ENGLISH_NM"

length="40"

/>

<property

name="staffPic"

type="java.lang.String"

column="STAFF_PIC"

length="2147483647"

/>

<property

name="countryId"

type="java.lang.String"

column="COUNTRY_ID"

length="36"

/>

<property

name="identityNo"

type="java.lang.String"

column="IDENTITY_NO"

length="20"

/>

<property

name="sexId"

type="java.lang.String"

column="SEX_ID"

length="36"

/>

<property

name="birthDate"

type="java.sql.Timestamp"

column="BIRTH_DATE"

length="6"

/>

<property

name="nationalId"

type="java.lang.String"

column="NATIONAL_ID"

length="36"

/>

<property

name="bloodId"

type="java.lang.String"

column="BLOOD_ID"

length="36"

/>

<property

name="nativeProvinceId"

type="java.lang.String"

column="NATIVE_PROVINCE_ID"

length="36"

/>

<property

name="nativeCityId"

type="java.lang.String"

column="NATIVE_CITY_ID"

length="36"

/>

<property

name="residenceProvinceId"

type="java.lang.String"

column="RESIDENCE_PROVINCE_ID"

length="36"

/>

<property

name="residenceCityId"

type="java.lang.String"

column="RESIDENCE_CITY_ID"

length="36"

/>

<property

name="politicalId"

type="java.lang.String"

column="POLITICAL_ID"

length="36"

/>

<property

name="eduLevId"

type="java.lang.String"

column="EDU_LEV_ID"

length="36"

/>

<property

name="majorId"

type="java.lang.String"

column="MAJOR_ID"

length="36"

/>

<property

name="grduateDate"

type="java.sql.Timestamp"

column="GRDUATE_DATE"

length="6"

/>

<property

name="maritalStatusId"

type="java.lang.String"

column="MARITAL_STATUS_ID"

length="36"

/>

<property

name="joinWorkDate"

type="java.sql.Timestamp"

column="JOIN_WORK_DATE"

length="6"

/>

<property

name="outsideworkYear"

type="java.lang.Integer"

column="OUTSIDEWORK_YEAR"

/>

<property

name="wkTimeTypeId"

type="java.lang.String"

column="WKTIME_TYPE_ID"

length="36"

/>

<property

name="staffTypeId"

type="java.lang.String"

column="STAFF_TYPE_ID"

length="36"

/>

<property

name="employTypeId"

type="java.lang.String"

column="EMPLOY_TYPE_ID"

length="36"

/>

<property

name="cooperateTypeId"

type="java.lang.String"

column="COOPERATE_TYPE_ID"

length="36"

/>

<property

name="internStartDate"

type="java.sql.Timestamp"

column="INTERN_START_DATE"

length="6"

/>

<property

name="internEndDate"

type="java.sql.Timestamp"

column="INTERN_END_DATE"

length="6"

/>

<property

name="enterCompanyDate"

type="java.sql.Timestamp"

column="ENTER_COMPANY_DATE"

length="6"

/>

<property

name="trialStartDate"

type="java.sql.Timestamp"

column="TRIAL_START_DATE"

length="6"

/>

<property

name="trialMonth"

type="java.lang.Integer"

column="TRIAL_MONTH"

/>

<property

name="formalDate"

type="java.sql.Timestamp"

column="FORMAL_DATE"

length="6"

/>

<property

name="contractEndDate"

type="java.sql.Timestamp"

column="CONTRACT_END_DATE"

length="6"

/>

<property

name="leaveDate"

type="java.sql.Timestamp"

column="LEAVE_DATE"

length="6"

/>

<property

name="holdpostStartDate"

type="java.sql.Timestamp"

column="HOLDPOST_START_DATE"

length="6"

/>

<property

name="levStartDate"

type="java.sql.Timestamp"

column="LEV_START_DATE"

length="6"

/>

<property

name="mobileNo"

type="java.lang.String"

column="MOBILE_NO"

length="20"

/>

<property

name="fixedTel"

type="java.lang.String"

column="FIXED_TEL"

length="20"

/>

<property

name="staffEmail"

type="java.lang.String"

column="STAFF_EMAIL"

length="40"

/>

<property

name="homeAddr"

type="java.lang.String"

column="HOME_ADDR"

length="500"

/>

<property

name="addrPostal"

type="java.lang.String"

column="ADDR_POSTAL"

length="20"

/>

<property

name="residenceAddr"

type="java.lang.String"

column="RESIDENCE_ADDR"

length="500"

/>

<property

name="residencePostal"

type="java.lang.String"

column="RESIDENCE_POSTAL"

length="20"

/>

<property

name="emergContact"

type="java.lang.String"

column="EMERG_CONTACT"

length="20"

/>

<property

name="relationship"

type="java.lang.String"

column="RELATIONSHIP"

length="10"

/>

<property

name="emergTel"

type="java.lang.String"

column="EMERG_TEL"

length="20"

/>

<property

name="memo"

type="java.lang.String"

column="MEMO"

length="500"

/>

<property

name="createUser"

type="java.lang.String"

column="CREATE_USER"

length="20"

/>

<property

name="createTerminal"

type="java.lang.String"

column="CREATE_TERMINAL"

length="40"

/>

<property

name="createDatetime"

type="java.sql.Timestamp"

column="CREATE_DATETIME"

length="6"

/>

<property

name="updateUser"

type="java.lang.String"

column="UPDATE_USER"

length="20"

/>

<property

name="updateTerminal"

type="java.lang.String"

column="UPDATE_TERMINAL"

length="40"

/>

<property

name="updateDatetime"

type="java.sql.Timestamp"

column="UPDATE_DATETIME"

length="6"

/>

<!--
Associations -->

<set

name="hrStaffSocietyRelations"

lazy="true"

inverse="true"

cascade="all-delete-orphan"

>

<key>

<column name="STAFF_ID" />

</key>

<one-to-many

class="jp.co.yamaha_motor.xa01.common.entity.HrStaffSocietyRelation"

/>

</set>

</class>

</hibernate-mapping>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐