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

发布于 2024-11-06 01:40:55 字数 1067 浏览 1 评论 0原文

有两个类 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 列上有一个非空约束和一个外键约束。 当我尝试插入包含 BI 的 A 时,出现以下错误:

ORA-01400: 无法将 NULL 插入 ("SCHEMA"."B"."A_FK")

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

There are two classes A and B and hibernate mappings

<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>

On the database there is a not null contraint and a foreign key constraint on the column A_FK of table B.
When I try to insert an A that contains a B I get the following error:

ORA-01400: cannot insert NULL into ("SCHEMA"."B"."A_FK")

Is it possible to insert this kind of data without having to specify the inverse=true flag? and the inverse relationship?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

空袭的梦i 2024-11-13 01:40:55

除非摆脱 id 的生成方式。您可以切换 Id 的生成方式吗?

Not without getting rid of the way the id is generated. Can you switch how the Id is generated?

饮惑 2024-11-13 01:40:55

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

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

Converting the problem to a question is half the answer...

What was missing was the not-null="true" on the key of the set:

<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>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文