java - Spring Data,Hibernate - 一对多关系不会为孩子们持续存在
问题描述
我在两个实体之间设置了一对多关系 - 一个锻炼会话(父)和一个锻炼(子),一个有很多锻炼的锻炼。
但是,当我尝试保存锻炼会话时,出现错误:
错误:重复键值违反唯一约束“exercise_pkey”详细信息:键 (id)=(21) 已存在。
我不明白为什么练习没有在这里生成唯一的密钥?
@Entity
@Table(name="workout")
public class Workout {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long id;
private String name;
private String category;
private String type;
private Timestamp duration;
private String notes;
@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true)
@JoinColumn(name = "id")
private List<Exercise> exercises;
}
@Entity
@Table(name="exercise")
public class Exercise {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long id;
@Column(name="name")
private String exerciseName;
}
表创建脚本:
CREATE TABLE WORKOUT(
ID serial PRIMARY KEY NOT NULL,
NAME CHAR(50) NOT NULL,
CATEGORY CHAR(50),
TYPE CHAR(50),
DURATION TIMESTAMP,
NOTES CHAR(500)
);
CREATE TABLE exercise (
id serial primary key not null,
workout integer references workout(id),
name char(100) NOT NULL
);
解决方案
推荐阅读
- android-edittext - Android Studio:如何将 EditText 字段与 Java 代码连接,以便 Java 导入数字并将其用于方法
- java - Java Swing 渲染问题(空白空间和双重渲染)
- google-api - 使用 Nodejs 使用 Passport 的 Google 身份验证代表用户上传 YouTube 视频
- kotlin - Kotlin 倒计时如何做 分钟:秒:毫秒
- python - 从 sklearn.linear_model 导入线性回归
- spring-boot - Spring Security 和端口转发
- python - 向 PySpark 数据框添加多列
- java - 如何在 Freemarker 模板中标记复选框
- vue.js - Vue2 应用程序使用 Axios 从 api 获取信息在部署到 Heroku 时不起作用,应用程序发送不正确的 url
- node.js - 在 Cron 时间更改后,Cron 会同时运行,前一次和配置的新时间