postgresql - Spring Boot Hibernate没有持久化嵌套实体
问题描述
我有一张“技能”表和一张“答案”表(我知道应该是单数)。技能与答案有关系,因为它可以有多个:
技能实体:
@OneToMany(mappedBy = "skills", fetch = FetchType.EAGER)
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
private Set<Answers> answers = new HashSet<>();
答题类:
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "sequenceGenerator")
@SequenceGenerator(name = "sequenceGenerator")
private Long id;
@Column(name = "answer")
private String answer;
@Max(value = 1)
@Column(name = "weight")
private Integer weight;
@ManyToOne(optional = false)
@NotNull
@JsonIgnoreProperties(value = "answers", allowSetters = true)
private Skills skills;
当我使用以下数据创建新技能时:
{
"name":"Hello",
"shorthand":"EE",
"answers":[
{
"answer":"answer 1",
"weight":1
},
{
"answer":"answer 2",
"weight":2
},
{
"answer":"answer 3",
"weight":3
},
{
"answer":"answer 4",
"weight":4
},
{
"answer":"answer 5",
"weight":5
}
]
}
我得到以下回复:
{
"id": 1255,
"name": "Hello",
"shorthand": "EE",
"answers": [
{
"id": null,
"answer": "answer 1",
"weight": 1,
"skills": null
},
{
"id": null,
"answer": "answer 2",
"weight": 2,
"skills": null
},
{
"id": null,
"answer": "answer 3",
"weight": 3,
"skills": null
},
{
"id": null,
"answer": "answer 4",
"weight": 4,
"skills": null
},
{
"id": null,
"answer": "answer 5",
"weight": 5,
"skills": null
}
],
}
正如您所看到的,技能的 ID 是生成的,因为它是一个新实体,但答案不会发生这种情况,每个答案都会返回一个 null 的 id + 它们不会保留在数据库中。我做错了什么,任何帮助都会很好。
解决方案
您忘记在@OneToMany
.
这个例子:
@OneToMany(mappedBy = "skills", fetch = FetchType.EAGER, cascade = CascadeType.ALL)
推荐阅读
- javascript - Can someone explain how the routine below is logging "undefined" in console?
- c# - grpc-dotnet 身份验证 jwt 不记名令牌
- python - Python 无服务器函数 Vercel - Next.js
- ssl - 启用 SSL 的 GCP 运行状况检查
- kotlin - 强行打开或以其他方式冒充 Kotlin 中的课程
- python - 创建具有多列的图
- python - 向 Python Flask 服务器发送 HTTP 请求
- google-cloud-automl - 在谷歌云平台«开始培训»被禁用
- javascript - 分配失败 - JavaScript 堆出内存节点 js 读取文件夹中的所有文件
- r - 层次聚类和k均值