我遇到的问题更多的是一个方法问题,而不是如何使用,请让我解释一下:
两个班,学生和家庭作业。学生班有他们许多家庭作业的清单。家庭作业班有很多学生的名单来完成它。
一些示例代码,以防有人搜索快速多对多示例:
@Entity(name="STUDENT")
@Inheritance(strategy=InheritanceType.JOINED)//Note this join type, no redundancy
public class Student {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private int id;
@ManyToMany(mappedBy="studentList")//Note how this is mapped
private Collection<Homework> homeworkList = new ArrayList<Homework>();
@Entity(name="HOMEWORK")
@Inheritance(strategy=InheritanceType.JOINED)
public class Homework {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private int id;
@ManyToMany
private Collection<Student> studentList = new ArrayList<Student>();
Hibernate做了它的事情并创建了一个表,student_homework使用主键将每个家庭作业分配给学生,反之亦然。
我怎么可能使用Hibernate来保存'homeworkCompleted'布尔值。 这个值不能存在于学生班,因为有很多工作,与家庭作业一样,因为有很多学生。
一种可能的解决方案是可能手动进入数据库,创建另一列,每次保存一个条目都可以选择更新已完成的或稍后再做。
我不禁认为有一个非常简单的解决方案,hibernate可以处理并使一切正常,同时使用一些应用逻辑。
非常感谢, 迪安
答案 0 :(得分:2)
你现在需要两个多对一,你的student_homework变得像Assignment [completed]。
更多相关信息: Mapping many-to-many association table with extra column(s)