gpt4 book ai didi

组件中的 hibernate 空集合

转载 作者:行者123 更新时间:2023-12-04 02:28:38 24 4
gpt4 key购买 nike

我有一个使用 Hibernate 映射的组件。如果数据库中组件中的所有字段都为空,则组件本身被hibernate 设置为空。这是预期的行为,也是我需要的。

我遇到的问题是,当我向该组件添加一个包时,该包被初始化为一个空列表。这意味着组件具有非空值...导致组件被创建。

知道如何解决这个问题吗?

<class name="foo.bar.Entity" table="Entity">
<id name="id" column="id">
<generator class="native" />
</id>

<property name="departure" column="departure_time" />
<property name="arrival" column="arrival_time" />

<component name="statistics">
<bag name="linkStatistics" lazy="false" cascade="all" >
<key column="entity_id" not-null="true" />
<one-to-many class="foo.bar.LinkStatistics" />
</bag>

<property name="loggedTime" column="logged_time" />

...
</component>

带有 Resirctions.isNull("statistics") 的标准确实会返回预期值。

最佳答案

这里的基本问题是 Hibernate 无法区分空集合和空集合,因此它将它们都视为空:非空。

我建议您将 Statistics 组件改为真实实体。然后你的 foo.bar.Entity 类有一个引用,它可以是空的。这并不理想,因为您必须创建另一个表来存储统计实体,但如果您想要 null 与空语义区别,这是一种获取它的方法。

关于组件中的 hibernate 空集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2786832/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com