与数据库约束的一对多关系和inverse = true

时间:2011-05-11 07:31:52

标签: oracle hibernate ora-01400

有两个类A和B以及hibernate映射

<hibernate-mapping  default-lazy="false">
        <class name="A" table="A">
            <id name="id" type="long">  
                <generator class="sequence"><param name="sequence">A_SEQUENCE</param></generator></id>
     <set name="a" cascade="all" inverse="false"  >
            <key><column name="A_FK" not-null="true" /></key>
            <one-to-many class="B" /></set>
   </class>
</hibernate-mapping>

<hibernate-mapping  default-lazy="false">
    <class name="B" table="B">
        <id name="id" type="long"> <column name="ID"/>
            <generator class="sequence"><param name="sequence">B_SEQUENCE</param></generator></id>
       </class>
</hibernate-mapping>

在数据库上,表B的列A_FK上存在非空约束和外键约束。 当我尝试插入包含B的A时,我收到以下错误:

ORA-01400:无法插入NULL(“SCHEMA”。“B”。“A_FK”)

是否可以插入此类数据而无需指定inverse = true标志?和反比关系?

2 个答案:

答案 0 :(得分:0)

并没有摆脱生成id的方式。你能切换Id的生成方式吗?

答案 1 :(得分:0)

将问题转换为问题只是答案的一半......

缺少的是该集合键上的not-null="true"

<set name="a" cascade="all" inverse="false"  >
        <key not-null="true"><column name="A_FK" not-null="true" /></key>
        <one-to-many class="B" />
</set>