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

来源:互联网 发布:淘宝买家佣金怎么查 编辑:程序博客网 时间:2024/06/05 04:02

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>