你能帮助我吗,使用hibernate和annotations我想加入4个表(prof,salle,groupe,cours)和另一个表(creneau)。其中4个与第5个表有多对多的关系。
我用Google搜索了,我知道有多对多的关系(我发现只有2个表的情况)会创建一个链接表来加入它们,它包含它们的键(在我的情况下会有额外的列也)
这是我发现Join Tutorial的最佳链接。我发现更适合问题的解决方案是重复4个表(prof-creneau)/(salle / creneau)的教程.... 并使用相同的链接表。
这是实现它的最佳方式(对我而言似乎重复)?
答案 0 :(得分:0)
Classic @ManyToMany关系指的是两个实体。
如果你想要多对多的表关系,你需要使用额外的列来连接表。
这是一个有用的例子:
http://www.mkyong.com/hibernate/hibernate-many-to-many-example-join-table-extra-column-annotation/
答案 1 :(得分:-1)
正如我在你对你的答案的评论中提到的那样,我不是百分百清楚,但我猜你有四种截然不同的多对多关系:
如果是这种情况,那么你的猜测是正确的。实现它的最佳方式是拥有四个独立的多对多关系。这意味着您将有四个连接表(每个关系一个,每个有两列; creneau的外键和关系中另一个表的外键)。
在Hibernate中,您可以单独指定所有这些映射。
您的DAO课程可能类似于:
public class Prof {
private Set<Creneau> creneaus = ...;
}
public class Salle {
private Set<Creneau> creneaus = ...;
}
public class Groupe {
private Set<Creneau> creneaus = ...;
}
public class Cours {
private Set<Creneau> creneaus = ...;
}
public class Creneau {
private Set<Prof> profs = ...;
private Set<Salle> salles = ...;
private Set<Groupe> groupes = ...;
private Set<Cours> courss = ...;
}
这可能看似重复,但你做在这里有四个独立的关系。