【发布时间】:2019-11-19 10:22:08
【问题描述】:
我正在使用与 MySQL 数据库连接的 JPA 和 Hibernate 创建 API。我有保存在数据库中的对象“锻炼”和对象“训练”。练习很简单,有名称、id、级别等,但训练有 id、name 和 listOfExercises。将其保存在数据库中的最佳方法是使用一对多关系,对吗?但是,当我创建训练并将其与例如“俯卧撑”和“小队”连接时,接下来我创建了与相同练习相关的第二次训练 - 所有者被补充了。如何创建培训并将练习与培训联系起来而无需替换?
训练模型(constructors, getter and setter当然也是):
@Entity
@Table(name = "Training")
public class Training {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "training_id")
private Long trainingId;
@OneToMany
@JoinColumn(name = "training_id")
private List<Exercise> exerciseList;
@Column(name = "sets")
@NotNull
private int sets;
@Column(name = "user_id")
private Long userId;
@Column(name = "training_name")
@NotNull
private String trainingName;
@Column(name = "breaks")
@NotNull
private int breaksBetweenExercises;
@Column(name = "level")
@NotNull
private int level;
练习模型:
@Entity
@Table(name = "Exercise")
public class Exercise {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "exercise_id")
private int id;
@Column(name = "exercise_name")
@NotNull
private String exerciseName;
@Column(name = "exercise_level")
@NotNull
private int level;
@Column(name = "exercise_info")
@NotNull
private String info;
@Column(name = "img_path")
@NotNull
private String imgPath;
@Column(name = "reps")
private int reps;
通过这种方式我正在添加培训:
trainingRepository.save(new Training(exerciseRepository.findAll(),"Full Body Workout",5,1,4));
List<Exercise> exercises = new ArrayList<>();
exercises.add(exerciseRepository.findAll().get(2));
exercises.add(exerciseRepository.findAll().get(1));
trainingRepository.save(new Training(exercises,"Abs",10,2,4));
这看起来像在数据库中(training_id 已替换): img
【问题讨论】:
-
可能是多对多关系?
-
你能提供一些代码吗?
-
@Amongalen 我是数据库新手,多对多应该可以吗?我添加了我的模型
-
这样说,用户参加了培训,培训有很多练习,进一步多个用户可以进行相同的培训。
标签: java mysql hibernate jpa one-to-many