Chr*_*OFF 3 java orm hibernate
我试图使ManyToMany关联对所有CRUD操作都起作用。我有两个实体:Places和Events。
场所可以容纳多个事件,并且一个事件可以在多个地方发生。
在第一种情况下,我有
在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关系的页面。
克里斯托弗
| 归档时间: |
|
| 查看次数: |
7643 次 |
| 最近记录: |