相关疑难解决方法(0)

为什么建议避免外键上的单向一对多关联?

可能重复:
Hibernate单向一对多关联 - 为什么连接表更好?

在Hibernate在线文档中,在第7.2.3节"一对多"中,提到了:

外键上的单向一对多关联是一种不常见的情况,不建议这样做.您应该使用连接表进行此类关联.

我想知道为什么?我唯一想到的是,它可以在级联删除期间产生问题.例如,Person指的是外键上一对多关系的地址,该地址将拒绝在该人之前删除.

任何人都可以解释推荐背后的理性吗?

以下是参考文件内容的链接:7.2.3.一到多

我在这里复制粘贴了实际内容:

外键上的单向一对多关联是一种不寻常的情况,不建议这样做.

<class name="Person">
    <id name="id" column="personId">
        <generator class="native"/>
    </id>
    <set name="addresses">
        <key column="personId" 
            not-null="true"/>
        <one-to-many class="Address"/>
    </set>
</class>

<class name="Address">
    <id name="id" column="addressId">
        <generator class="native"/>
    </id>
</class>
Run Code Online (Sandbox Code Playgroud)
create table Person (personId bigint not null primary key)
create table Address (addressId bigint not null primary key, personId bigint not null)
Run Code Online (Sandbox Code Playgroud)

您应该使用连接表进行此类关联.

java sql rdbms hibernate

17
推荐指数
1
解决办法
1万
查看次数

使用连接表和休眠注释来一对一地休眠

我想使用连接表在两个表之间建立一对多的关系.

这就是我想使用连接表的原因:

最后,我想使用Hibernate注释来执行此操作.

我找到了一些使用xml映射执行此操作的示例,但没有使用注释.

我相信这将是如何创建表格的

CREATE TABLE `PRODUCT` (
  `PRODUCT_ID`      BIGINT       PRIMARY KEY AUTO_INCREMENT
);

CREATE TABLE `PARTS` (
  `PART_ID`         BIGINT       PRIMARY KEY AUTO_INCREMENT
);

-- USER_IMAGE_ID must be unique if we want a one-to-many relationship between PRODUCTS & PARTS tables
CREATE TABLE `USER_DETAILS_IMAGE` (
  `PRODUCT_ID`      BIGINT,
  `PART_ID`         BIGINT UNIQUE,
  CONSTRAINT `FK_PRODUCT_ID`  FOREIGN KEY (`PRODUCT_ID`)   REFERENCES `PRODUCT`(`PRODUCT_ID`),
  CONSTRAINT `FK_PART_ID`     FOREIGN KEY (`PART_ID`)      REFERENCES `PARTS`(`PART_ID`)
);
Run Code Online (Sandbox Code Playgroud)

annotations hibernate one-to-many hibernate-annotations

10
推荐指数
1
解决办法
5万
查看次数

OneToMany - 连接表和外键之间有什么区别?

可以@OneToMany使用@JoinColumn注释禁用关系连接表.默认为连接表.

例如,生产系统有哪些优缺点?
什么时候应该使用连接表?

谢谢.

mapping one-to-many eclipselink jpa-2.0

9
推荐指数
1
解决办法
1万
查看次数