是否可以在Hibernate中映射两列表而不是两列表

时间:2017-01-18 15:12:24

标签: java hibernate oracle11g nhibernate-mapping

我遇到的情况是1个表有2列,它们之间有很多对多的关系。让我举例说明 我有一个名为

的表
  

StudentCC

StudentId | CoachingCenterId
    1              C1
    1              C2
    2              C1
    2              C2

现在这是1个表的列之间的manyToManyRelation。 我搜索了互联网并没有找到任何与此相关的内容。每个建议都至少有两个表格。 我的理解是它可以在ManyToMany以及OneToMany和ManyToOne关系映射中完成。但是不要理解。

我试图建立一个ManyToMany关系:请建议它是否真实。如果我必须使用这个或2个OneToMany和ManyToOne关系方法。

@ManyToMany(MappedBy="AnyThing" cascade=CascadeType.ALL)
@JoinTable(name="StudentCC" JoinColumns={@JoinColumn(name="StudentId")},
inverseJoinColumns{@JoinColumn(name="CoachingCenterId")})
Private Set<StudentCC> rel = new HashSet<StudentCC>();
@ManyToMany(cascade=CascadeType.ALL)
@JoinTable(name="StudentCC" JoinColumns=@JoinColumn(name="CoachingCenterId")},
inverseJoinColumns{@JoinColumn(name="StudentId")})
Private Set<StudentCC> rel = new HashSet<StudentCC>();

请指教。提前谢谢。

1 个答案:

答案 0 :(得分:0)

我相信你不能拥有JointTable(姓名=&#34; StudentCC&#34;),因为很多人不能分组到StudentCC或coachingCenterID,你需要一个新表来保持学生和教练中心之间的多对多,例如StudentCoachingCenter。

在Student课程中,您需要具有CoachingCenters的集合

 @ManyToMany
    @JoinTable(name="StudentCoachingCenter", 
    joinColumns = {@JoinColumn(name="StudentCC")}, inverseJoinColumns ={@JoinColumn(name="coachingCenterID")})
   private Set<CoachingCenter> coachingCenters;