【发布时间】:2019-08-23 18:52:51
【问题描述】:
我在休眠中有一个多对多关系,连接表中有额外的列。当我保存主实体而不影响两个表(连接表)之间的关系时,连接表中的记录被删除并创建而不是更新。多么想知道如何避免这种情况?
我知道这个问题可以通过使用 Set 集合而不是 List 在 @ManyToMany 关系中解决。不知道如何在这里实现。
我的桌子是
APPLICATIONS
ID NUMBER NOT NULL,
USER_ID NUMBER(1),
STATUS VARCHAR2(10)
APPLICATION_OPENINGS
ID NUMBER NOT NULL,
OPENING_ID NUMBER NOT NULL,
APPLICATION_ID NUMBER NOT NULL,
PRIORITY NUMBER NOT NULL
OPENINGS
ID NUMBER NOT NULL,
NAME VARCHAR2(512) NOT NULL,
LOCATION_ID NUMBER
我的实体关系定义为
Application.java
@OneToMany(fetch = FetchType.LAZY,cascade = {CascadeType.ALL}, mappedBy = "application")
private List<ApplicationOpening> openings;
ApplicationOpening.java
@ManyToOne
@JoinColumn(name = "APPLICATION_ID")
private Application application;
@ManyToOne
@JoinColumn(name="OPENING_ID")
private Opening opening;
Opening.java
No reference to the Join Entity ApplicationOpening
DAO 服务
applicationDAO.save(application);
对于在应用程序 DAO 上执行保存而不修改任何内容的情况,例如(因此对关系没有影响),连接表 APPLICATION_OPENING 中的记录将被删除并再次创建,如下所示。
delete from APPLICATION_OPENINGS where id=?|delete from APPLICATION_OPENINGS where id=388
delete from APPLICATION_OPENINGS where id=?|delete from APPLICATION_OPENINGS where id=387
insert into APPLICATION_OPENINGS (APPLICATION_ID, PRIORITY, OPENING_ID, id) values (55, 1, 28, 412)
insert into APPLICATION_OPENINGS (APPLICATION_ID, PRIORITY, OPENING_ID, id) values (55, 2, 26, 413)
我怎样才能避免这种情况?非常感谢您的帮助。
【问题讨论】:
标签: java hibernate spring-data-jpa jointable