我正试图使许多协会为所有CRUD操作工作。我有两个实体:
Places
和
Events
地点可以容纳多个事件,一个事件可以在多个地点发生。
在第一种情况下,我有
在课堂上
@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;
上课地点:
@JoinTable(name = "EVENTS_PLACES", joinColumns = @JoinColumn(name = "EVENT_ID"), inverseJoinColumns = @JoinColumn(name = "PLACE_ID"))
private List<PlaceDto> places;
在这种情况下,在更新地点时,地点与其事件之间的链接被删除
DELETE FROM EVENTS_PLACES where ...
陈述
第二种情况
@ManyToMany (
mappedBy = "events",
cascade = { CascadeType.PERSIST, CascadeType.MERGE },
fetch = FetchType.LAZY,
targetEntity = FundDto.class)
private List<PlaceDto> places;
当更新一个地方时,一切似乎都很好,
但当我尝试创建一个事件时,它也尝试创建一个地方
=>这会导致主键冲突。
我使用eclipse重写了hashcode()和equals()。
谢谢你的帮助。
克里斯托弗