如何将一组 java 对象表示为数据库中其他对象的字段?
Posted
技术标签:
【中文标题】如何将一组 java 对象表示为数据库中其他对象的字段?【英文标题】:How to represent set of java objects as a field of other object in database? 【发布时间】:2019-12-20 06:37:07 【问题描述】:我有一个班级练习和培训。我想在每次训练中都有一套练习。我的问题是 - 如何在数据库和 java 中表示它?
我的想法是根据training_id
(exercise
表中的外键)在特定训练中添加一个练习。
但是我想将一个训练中的每个练习存储在一个集合中,或者只是列出训练类的一个字段 - 我认为这是这样做的好方法,但我可能错了。
@Entity
@Table(name = "exercise")
public class Exercise
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "exercise_id")
private int id;
@Column(name = "exercise_name")
private String name;
@Column(name = "weight")
private double weight;
@Column(name = "series")
private int series;
@Column(name = "training_id")
private int trainingId;
@Table(name = "training")
public class Training
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "training_id")
private int id;
@Column(name = "training_name")
private String trainingName;
@Column(name = "date")
private Date date;
private Set<Exercise> exercises;
也许我不明白它的概念。有人可以告诉我一个正确的方法吗?
【问题讨论】:
您用jdbc
标记了您的问题。但是您的代码显示了 JPA 实体。那么,您使用的是 JDBC 还是 JPA?
我的错,对不起——当然是 JPA
那你需要学习一下。这是一个复杂的野兽。阅读一本关于它的好书,和/或 Hibernate 文档。它有一个关于实体之间关联的完整部分,这是 JPA 的基本基本构建块。 docs.jboss.org/hibernate/orm/current/userguide/html_single/…
【参考方案1】:
试试这个:
@Table(name = "training")
public class Training
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "training_id")
private int id;
@Column(name = "training_name")
private String trainingName;
@Column(name = "date")
private Date date;
@OneToMany(mappedBy = "training")
private Set<Exercise> exercises = new HashSet<>();
@Entity
@Table(name = "exercise")
public class Exercise
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "exercise_id")
private int id;
@Column(name = "exercise_name")
private String name;
@Column(name = "weight")
private double weight;
@Column(name = "series")
private int series;
@Column(name = "training_id")
private int trainingId;
@ManyToOne
@JsonIgnoreProperties("exercises")
private Training training;
这将是由外键引用的 2 个独立数据库。
编辑:这将是由外键引用的 2 个单独的 表(不是数据库)。
【讨论】:
以上是关于如何将一组 java 对象表示为数据库中其他对象的字段?的主要内容,如果未能解决你的问题,请参考以下文章