Hibernate:带有非空列的可选多对一

时间:2012-01-25 13:25:03

标签: java hibernate orm hbm

我在两个班级之间有一个可选的多对一关系。通过将外键设置为null,Hibernate将该属性转换为可选属性。

我的db-schema不允许列为null。要选择的属性由这些列的默认值表示。

<class name="sth.Alpha" ...>
    ....
    <many-to-one name="beta" not-found="ignore" class="sth.Beta" insert="true" update="true">
        <column name="a1/>
        <column name="a2/>
    </many-to-one>
</class>

<class name="sth.Alpha" ...>
    <composite-id>
        <key-property name="b1" type="int">
            <column name="b1" precision="8" scale="0"/>
        </key-property>
        <key-property name="b2" type="int">
            <column name="b2" precision="8" scale="0"/>
        </key-property>
    </composite-id>
</class>

选择数据没有问题,因为may-to-one-tag中的not-found="ignore"会导致null - beta - 对象。但是,如果我要插入Alpha?将beta设置为null。我收到一个例外情况,即无法将null插入a1a2

如果我将insertupdate设置为false,我就摆脱了这个问题。但如果设置了关系,则会导致不保存关系。

无法更改Database-Schema,并且Hibernate-version已修复为3.5

如果你告诉我,我也很高兴,这是不可能的

1 个答案:

答案 0 :(得分:3)

how to use 0 instead of null<id unsavedvalue="whatever">一起提供帮助

other solution