我正在努力使ManyToMany协会适用于所有CRUD操作
我需要实体:地方和活动地点可以举办多个活动,活动可以在多个地方举行
In first case I had
在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 ...语句
Second case
因此,在阅读了一些文档后,我将PlaceDto更改为
@ManyToMany(mappedBy =“events”,cascade = {CascadeType.PERSIST,CascadeType.MERGE},fetch = FetchType.LAZY,targetEntity = FundDto.class)private list places;
当更新一个地方时,一切似乎都很好但是当我尝试创建一个事件时,它也尝试创建一个地方
=>这会导致主键违规
我有使用ecplise的hashcode和equals over ....
谢谢你的帮助
请毫不犹豫地将我指向一个页面,其中展示并解释了完全可用且经过测试的ManyToMany关系
克里斯托弗
1 回答
这是一个很好的example
只是尝试将他们拥有的内容复制到您自己的代码中,它应该可以工作 . 如果它仍然没有,请发布两个类的完整列表和导致错误的代码,也许我可以看到问题是什么 .