Hibernate ManyToMany更新时出现Join table问题

Chr*_*OFF 3 java orm hibernate

我试图使ManyToMany关联对所有CRUD操作都起作用。我有两个实体:PlacesEvents

场所可以容纳多个事件,并且一个事件可以在多个地方发生。

在第一种情况下,我有

在PlaceDto类别中

@ManyToOne(  
    targetEntity=EventDto.class,  
    cascade = { CascadeType.PERSIST, CascadeType.MERGE })  
@JoinTable(  
    name = "EVENTS_PLACES",  
    joinColumns = { @JoinColumn(name = "PLACE_ID") },  
    inverseJoinColumns = { @JoinColumn(name = "EVENT_ID") })  
private List<EventDto> events;
Run Code Online (Sandbox Code Playgroud)

在PlaceDto类中:

@JoinTable(name = "EVENTS_PLACES", joinColumns = @JoinColumn(name = "EVENT_ID"), inverseJoinColumns = @JoinColumn(name = "PLACE_ID"))
private List<PlaceDto> places;
Run Code Online (Sandbox Code Playgroud)

在这种情况下,在更新地点时,
使用以下DELETE FROM EVENTS_PLACES where ...语句删除了地点及其事件之间的链接

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

@ManyToMany (
   mappedBy = "events",  
   cascade = { CascadeType.PERSIST, CascadeType.MERGE },  
   fetch = FetchType.LAZY,  
   targetEntity = FundDto.class)  
private List<PlaceDto> places;
Run Code Online (Sandbox Code Playgroud)

更新地点时,一切似乎都很好,但是当我尝试创建事件时,它还会尝试创建地点
=>,这会导致主键冲突。

我有使用eclipse覆盖的hashcode()和equals()。

谢谢你的帮助。

请毫不犹豫地指向我显示和说明经过全面测试的ManyToMany关系的页面。

克里斯托弗

Gre*_*zky 5

这是一个很好的例子

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