我正在努力使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关系
克里斯托弗
答案 0 :(得分:4)
这是一个不错的example
只是尝试将他们拥有的内容复制到您自己的代码中,它应该可以正常工作。 如果它仍然没有,请发布两个类的完整列表和导致错误的代码,也许我可以看到问题所在。