【问题标题】:Hibernate: saving parent alone when child is empty休眠:当孩子为空时单独保存父母
【发布时间】:2011-06-18 05:41:34
【问题描述】:

我有父表和子表。父母有一组孩子。这两个表有一对多的关系。在 hbm 中,我映射了一对多。我的要求是当孩子的大小为空时,我不应该保存孩子,只有父母应该被保存。如果孩子的大小不为空,那么父母和孩子都应该被保存。在子表中,我有 3 列都不是空列。我无法保存空值。可以在休眠状态下吗?如果是这样,请在这方面帮助我。

谢谢!

【问题讨论】:

    标签: hibernate


    【解决方案1】:

    只要你persist你的实体对象,hibernate就会做你想做的事。

    如果您没有空列,则必须提供值。

    【讨论】:

    • 感谢您的回复...当 chidl 为空时,是否可以只保留没有孩子的父母?
    • 是的。通过拥有一个空集或空集,您可以没有孩子。但是,不要将 null 放入集合中。
    【解决方案2】:

    在休眠映射中不要add not-null='true'

    parent.hbm.xml

    <set cascade="all, delete-orphan" name="child" order-by="param">
          <key>
            <column name="child_parent_id"/>
          </key>
          <one-to-many class="com.Child"/>
    </set>
    

    child.hbm.xml

    <many-to-one class="com.Parent" insert="false" name="rateCode" update="false">
          <!-- cascade="all" -->
          <column name="child_parent_id"/>
    </many-to-one>
    

    java

    save|saveUpdate

    parent.addChild = null;

    【讨论】:

    • 嗨拉维,非常感谢您的回复。如果我们使用上面的代码,因为我们使用的是 cascade = all,hibernate 会在子表中插入外键吗?如果它被插入,那么我会遇到问题,因为在子表中所有列都不是空列。
    • 正如我所说,同时将父使用子集|列表|包保存到 NULL 所以子 ID 也将为空
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-13
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    • 2017-06-30
    • 2013-10-26
    相关资源
    最近更新 更多