【问题标题】:Delete element from Set从集合中删除元素
【发布时间】:2011-02-06 16:41:26
【问题描述】:

我有 2 个课程 Tema(家庭作业)和 Disciplina(课程),其中一个课程有一组家庭作业。 在 Hibernate 中,我已将其映射到一对多关联,如下所示:

<class name="model.Disciplina" table="devgar_scoala.discipline" >
<id name="id"  >
    <generator class="increment"/>
</id> 
<set name="listaTeme" table="devgar_scoala.teme">
    <key column="Discipline_id" not-null="true" ></key>
    <one-to-many class="model.Tema" ></one-to-many>
</set>
</class>

<class name="model.Tema" table="devgar_scoala.teme" >
<id name="id">
    <generator class="increment" />
</id>
<property name="titlu" type="string" />
<property name="cerinta" type="binary">
    <column name="cerinta" sql-type="blob" />
</property>
</class>

问题是它会添加(在表'Teme'中插入行)但它不会删除任何行并且我没有抛出异常。

我正在使用 merge() 方法。

【问题讨论】:

    标签: java hibernate orm one-to-many hbm


    【解决方案1】:

    根据您的描述,我知道没有Disciplina 就无法存在Tema:如果您从集合中删除Tema,您希望将其删除。要告诉 Hibernate 这样做,您必须使用 cascade="all-delete-orphan"

    <set name="listaTeme" table="devgar_scoala.teme" cascade="all-delete-orphan">
        <key column="Discipline_id" not-null="true" ></key>
        <one-to-many class="model.Tema" ></one-to-many>
    </set>
    

    请参阅online documentation

    【讨论】:

      【解决方案2】:

      虽然你的问题不清楚(如何保存和删除?),我建议你需要设置cascade:

      <set cascade="all-delete-orphan">
      

      作为旁注 - 避免使用您的母语命名。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-05-13
        • 2017-08-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多