Hibernate ManyToMany在更新时出现连接表问题

时间:2009-07-27 14:17:53

标签: java hibernate orm

我正在努力使ManyToMany协会适用于所有CRUD操作 我有实体:地方和事件 地方可以举办多个活动,活动可以在多个地方举行

在第一种情况下,我有

在PlaceDto课程中

  

@ManyToOne(
      targetEntity = EventDto.class,
      cascade = {CascadeType.PERSIST,CascadeType.MERGE})
  @JoinTable(
      name =“EVENTS_PLACES”,
      joinColumns = {@JoinColumn(name =“PLACE_ID”)},
      inverseJoinColumns = {@JoinColumn(name =“EVENT_ID”)})
  私人名单事件;

在PlaceDto课程中

  

@JoinTable(name =“EVENTS_PLACES”,joinColumns = @JoinColumn(name =“EVENT_ID”),inverseJoinColumns = @JoinColumn(name =“PLACE_ID”))   私人名单;

在这种情况下,在更新地点时,地点与其事件之间的链接被删除了 DELETE FROM EVENTS_PLACES where ... statement

第二种情况
因此,在阅读了一些文档后,我将PlaceDto更改为

  

@ManyToMany(      mappedBy =“events”,
     cascade = {CascadeType.PERSIST,CascadeType.MERGE},
     fetch = FetchType.LAZY,
     targetEntity = FundDto.class)
  私人名单;

更新地点时一切似乎都很好 但是当我尝试创建一个事件时,它也尝试创建一个场所 =>这会导致主键违规

我有使用ecplise的hashcode和equals over ....

感谢您的帮助

请毫不犹豫地将我指向一个页面,其中显示并解释了完全正常运行且经过测试的ManyToMany关系

克里斯托弗

1 个答案:

答案 0 :(得分:4)

这是一个不错的example

只是尝试将他们拥有的内容复制到您自己的代码中,它应该可以正常工作。 如果它仍然没有,请发布两个类的完整列表和导致错误的代码,也许我可以看到问题所在。