【问题标题】:one-to-many relationshipt with database constrain and inverse=true与数据库约束和 inverse=true 的一对多关系
【发布时间】:2011-05-11 07:31:51
【问题描述】:

有两个类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 标志?和反比关系?

【问题讨论】:

    标签: oracle hibernate ora-01400


    【解决方案1】:

    必须摆脱 id 的生成方式。可以切换一下Id的生成方式吗?

    【讨论】:

      【解决方案2】:

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

      缺少的是集合键上的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>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-07-02
        • 1970-01-01
        • 2015-11-05
        • 1970-01-01
        • 2021-03-05
        • 2017-04-12
        • 2015-08-19
        相关资源
        最近更新 更多