我在两个类之间有一个可选的多对一关系。Hibernate通过将外键设置为null,将该属性转换为可选。
我的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>选择数据是没有问题的,因为在可能对一个标签中的not-found="ignore"将导致null-beta-object。但是如果我想插入一个Alpha呢?将beta设置为null。我得到了一个例外,这是不可能插入null到a1和a2。
如果我将insert和update设置为false,我就解决了这个问题。但是,如果设置了关系,这将导致不保存该关系。
无法更改数据库架构,并且Hibernate版本固定为3.5
如果你告诉我,这是不可能的,我也会很高兴
发布于 2012-01-26 23:20:34
https://stackoverflow.com/questions/9003455
复制相似问题