gpt4 book ai didi

使用连接表 hibernate 一对多,并 hibernate 注释

转载 作者:行者123 更新时间:2023-12-04 02:38:01 27 4
gpt4 key购买 nike

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

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

  • Hibernate unidirectional one to many association - why is a join table better?
  • Why is it recommended to avoid unidirectional one-to-many association on a foreign key?

  • 最后,我想使用 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`)
    );

    最佳答案

    不要寻找例子。阅读 official documentation :

    @Entity
    public class Product {

    private String serialNumber;
    private Set<Part> parts = new HashSet<Part>();

    @Id
    public String getSerialNumber() { return serialNumber; }
    void setSerialNumber(String sn) { serialNumber = sn; }

    @OneToMany
    @JoinTable(
    name="PRODUCT_PARTS",
    joinColumns = @JoinColumn( name="PRODUCT_ID"),
    inverseJoinColumns = @JoinColumn( name="PART_ID")
    )
    public Set<Part> getParts() { return parts; }
    void setParts(Set parts) { this.parts = parts; }
    }


    @Entity
    public class Part {
    ...
    }

    另请注意,这是单向一对多关联的默认设置。因此,您甚至不必提供 @JoinTable如果默认表名和列名适合您,则注释。

    关于使用连接表 hibernate 一对多,并 hibernate 注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13047483/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com