【发布时间】:2018-07-27 07:41:40
【问题描述】:
我对使用注释 @OneToMany/@ManyToOne 有疑问的每个人;是否可以在此模型中创建一个具有两组主题的用户模型(为教师进行并参加学生),而不是创建单独的学生和教师模型?我写了这样的代码,但是当我想获取有关项目和用户的数据时,hibernate 会崩溃“堆栈溢出”错误。我将添加我使用 H2 数据库。
用户实体:
@Entity
public class User{
@OneToMany(
mappedBy = "student",
cascade = CascadeType.ALL,
fetch = FetchType.EAGER,
orphanRemoval = true
)
private Set<Item> items = new HashSet<>();
@OneToMany(mappedBy = "teacher",
cascade = CascadeType.ALL,
fetch = FetchType.EAGER,
orphanRemoval = true
)
private Set<Item> carriedItems= new HashSet<>();
}
//id and other data
物品实体:
@Entity
public class Item{
@ManyToOne(fetch = FetchType.LAZY, optional = false)
@JoinColumn(name = "student_id", nullable = false)
private User student;
@ManyToOne(fetch = FetchType.LAZY, optional = false)
@JoinColumn(name = "teacher_id", nullable = false)
private User teacher;
}
//id and other data
感谢@Leviand 的帮助
【问题讨论】:
-
为什么要创建一个通用的
Item类而不是Student和Teacher类? -
我想知道这对于我的项目是否是一个更好的解决方案,因为用户有角色(“教师”或“学生”),如果我创建了教师和学生实体角色,则不需要它
-
第二个问题:一个用户怎么可能连接到多个教师/学生?对吗?
-
hmm,那不如用FK连接?
-
除了创建学生和教师之外,我还必须创建不同的存储库、服务等。下一个问题将是登录,如果我没有角色,如何识别谁登录。我用弹簧架