SpringBoot @OneToMany 及其工作原理

问题描述 投票:0回答:1

所以我有两个实体,用户和产品。用户包含一组产品,并使用@OneToMany链接到产品表。如果我要插入新产品,Spring 会自动更新用户表以反映更改,还是我应该自己相应地更新用户表?

spring-boot spring-data-jpa
1个回答
0
投票

如果关系建模正确,

User
表将不需要任何更改,因为
Product
表中有 PK 字段。

但是,如果您在更新之前获取它,则实体

User
不会自动更新。在那里,您必须从存储库再次获取它或手动更新集合。

public class User {
    @Id
    @GeneratedValue
    private Integer id;

    @OneToMany(mappedBy = "user")
    private List<Product> products;
}

public class Product {
    @Id
    @GeneratedValue
    private Integer id;

    @ManyToOne
    @JoinColumn(name = "user_id")
    @NotNull
    private User user;
}

这是一个简单的 OneToMany 映射,其中

Product
拥有该关系。它包含对
User
表的引用。要向用户添加另一个产品,您可以创建一个新的
Product
,其中设置
Product.user
字段,并通过存储库保存它。数据库中的新行将包含正确的用户 ID,但新产品中引用的用户不会自动将其包含在其集合中,直到您获取新用户或手动添加新产品。

© www.soinside.com 2019 - 2024. All rights reserved.