hibernate组件中的空集合

Jur*_*ert 11 null components hibernate bag

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

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

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

<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>
Run Code Online (Sandbox Code Playgroud)

Restirctions.isNull("statistics")的条件确实返回了预期值.

Mar*_*ope 0

我无法验证这一点,但这里有一个想法:

public void setListProperty(List list) {
  if (list == null || list.size() == 0) {
    this.listProperty = null;
  } else {
    this.listProperty = list;
  }
}
Run Code Online (Sandbox Code Playgroud)

显然不理想,但可能是您的解决方法......