java - 如何在 Spring Boot 中正确映射 OneToMany 关系?
问题描述
你好我正在做一个 Spring Boot 项目,我有点困惑。我有一个Product
实体和一个Property
实体,它们看起来像这样:
public class Product {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column
private Long id;
@Column
private String name;
@OneToMany(cascade = CascadeType.ALL)
private List<Property> properties;
//getters and setters omitted
}
public class Property {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column
private Long id;
@Column
private String name;
@Column
private String value;
//getters and setters omitted
}
现在我想知道是否还需要在 Propery 实体中指定一个 ManyToOne 关系,或者这是否足够好?在我过去的项目中,我尝试在两个实体(biredctional)中使用关系,结果一团糟,因为我在尝试从前端检索数据时经常陷入数据的“无限循环”。我只需要一个单向且简单的关系,其中一个产品可以有多个属性,然后我可以使用 getProperties() 方法检索数据。我是不是理解错了,还是我的代码对我想要做的事情足够好?
解决方案
如果你有一个单向的@OneToMany 关联,这意味着你只能从外键所在的父端访问关系。更多细节在这里
双向关联应始终在两侧更新,因此父端应包含 addChild 和 removeChild 组合。这些方法确保我们始终同步关联的双方,以避免对象或关系数据损坏问题。
推荐阅读
- javascript - 未捕获的 SyntaxError:jquery 中的意外字符串
- charts - SwiftUI 中的图表致命错误:数组索引超出范围:文件 Swift/ContiguousArrayBuffer.swift
- php - 登录到 WordPress 管理员后,网站重定向到主页我尝试了我在网上找到的所有方法
- c++ - how to tell if a character is inside a string c++
- f# - 如何编写 F# Type Provider 来生成 P/Invoke 代码?
- node.js - JSON 保存格式
- jwt - Most efficient way to provide unique Refresh Token
- java - How to filter JUnit5 tests with custom annotation
- css - SVG 元素悬停导致其他 SVG 元素发生变化
- asp.net-core - 使用 Attribute 和 ActionFilters 记录控制器和操作的请求和响应