首页 > 解决方案 > 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
);

标签: javapostgresqlhibernate

解决方案


推荐阅读