首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Hibernate使用delete HQL删除相关表?

Hibernate使用delete HQL删除相关表?
EN

Stack Overflow用户
提问于 2012-03-26 17:59:07
回答 2查看 1.6K关注 0票数 1

我对hibernate还不熟悉。这是我的主visaInquiry bean映射,它通过hibernate具有许多一对多和多对多关系映射。现在要删除我正在使用以下查询的记录

代码语言:javascript
复制
Transaction ts=session.beginTransaction();
                String hql="delete from VisaInquiry inq where inquiryId="+inqId;
                Query query=session.createQuery(hql);
                query.executeUpdate();
                ts.commit();

但问题是,它只删除主table.And中的记录,其他表上的所有数据都保持原样。我想删除所有相关的外部table..Please帮助中的所有记录?

代码语言:javascript
复制
    <id name="inquiryId" column="inquiryId">
      <generator class="increment"/>
    </id>        
    <property name="inquiryDate" type="date" column="inquiryDate"></property>
    <property name="name" type="string" column="name"></property>
    <property name="countryPreference" type="string" column="countryPreference"></property>
    <property name="address" type="string" column="address"></property>
    <property name="pnumberHome" type="string" column="pnumberHome"></property>
    <property name="pnumberResi" type="string" column="pnumberResi"></property>
    <property name="email" type="string" column="email"></property>
    <property name="dob" type="date" column="dob"></property>
    <property name="englishAblity" type="string" column="englishAblity"></property>
    <property name="ieltsScore" type="string" column="ieltsScore"></property>

    <property name="refusedVisa" type="string" column="refusedVisa"></property>
    <property name="refusedCountry" type="string" column="refusedCountry"></property>
    <property name="refusedTypeOfVisa" type="string" column="refusedTypeOfVisa"></property>

    <property name="relativeAbroad" type="string" column="relativeAbroad"></property>
    <property name="relativeCountry" type="string" column="relativeCountry"></property>
    <property name="relativeStatus" type="string" column="relativeStatus"></property>

    <property name="travellAbroad" type="string" column="travellAbroad"></property>
    <property name="travleCountry" type="string" column="travleCountry"></property>
    <property name="travelCountryVisaType" type="string" column="travelCountryVisaType"></property>

    <property name="prefLevelCourse" type="string" column="prefLevelCourse"></property>
    <property name="counselBy" type="string" column="counselBy"></property>
    <property name="comeToKnow" type="string" column="comeToKnow"></property>

    <property name="counselState" type="string" column="counselState"></property>
    <property name="remarks" type="string" column="remarks"></property>

    <set name="eduList" table="visaInquiry_education"   cascade="persist" lazy="false">
        <key column="inquiryId"></key>

        <many-to-many class="com.aems.beans.EducationQualification" column="educationId" unique="true"></many-to-many>
    </set>


    <set name="expList" table="visaInquiry_Experience" cascade="persist" lazy="false">
        <key column="inquiryId"></key>
        <many-to-many class="com.aems.beans.Experience" column="expId" unique="true"></many-to-many>
    </set>

    <set name="childList" table="visaInquiry_Children" cascade="persist" lazy="false">
        <key column="inquiryId"></key>
        <many-to-many class="com.`aems`.beans.Children" column="childId" unique="true"></many-to-many>
    </set>

    <many-to-one name="spouce" 
    class="com.aems.beans.Spouce" column="spouceId"  cascade="persist" unique="true" lazy="false"/>

使用cascade="persist“,我在插入时得到错误。使用cascade="all“在插入时没有问题,但当我删除时,只有一个表中的记录被删除。所有相关的表记录保持原样。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-03-28 19:00:19

我已经试过了,它对我来说效果很好。int id=Integer.parseInt(inquiryId);VisaInquiry inq = (VisaInquiry) session.load(VisaInquiry.class,id);session.delete(inq);session.flush();

票数 0
EN

Stack Overflow用户

发布于 2017-06-16 16:56:06

HQL delete查询(批量删除)不级联。

根据JPA规范(JSR338),第4.10节:

删除操作仅适用于指定类及其子类的实体。它不会级联到相关实体。

因此,当您需要使用cascade进行删除时,请使用Session.delete。请注意,Hibernate支持删除分离的实体,这在普通JPA中是不可能的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9870097

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档