所以我有两个实体,用户和产品。用户包含一组产品,并使用@OneToMany链接到产品表。如果我要插入新产品,Spring 会自动更新用户表以反映更改,还是我应该自己相应地更新用户表?
如果关系建模正确,
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,但新产品中引用的用户不会自动将其包含在其集合中,直到您获取新用户或手动添加新产品。