使用Spring Data和Java JPA,我想在MYSQL表中存储注释线程。评论是关于一些数据的,每个评论都可以有任意数量的儿童评论(想想Reddit)。我想知道这个Java类是否有意义满足我的需求。
@Entity
public class Comment extends Identified {
// Comment data
@Column(nullable=false)
private String data;
// Parent comment
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(nullable=true)
private Comment parent;
// Sub comments
@OneToMany(fetch=FetchType.EAGER)
@JoinColumn(nullable=true, mappedBy="parent")
private Set<Comment> children;
public Comment() { }
....
为了澄清,我的主要关注点是将ManyToOne和OneToMany关系同时提供给同一个班级。这似乎很难看,但也是表达这种关系的唯一方式。
答案 0 :(得分:2)
我向你保证你的绘图完全正常,我甚至会说平常。两个关系(多对一和一对多)在DB中使用不同的概念实现,不会发生冲突。由于关系是双向的,因此两个映射都代表两个不同链接的不同目的(一个是与父级的关系,另一个是与子级的关系)。