Hibernate@ManyToMany在只修改一个关系时删除/重新添加所有关系
我注意到Hibernate在处理很多关系时表现得不太理想。。。这会引起问题,因为我的关系表也有最后更新的时间戳(由MySQL自动维护),但Hibernate删除/插入太多,破坏了我的时间戳 我的设置:Hibernate@ManyToMany在只修改一个关系时删除/重新添加所有关系,hibernate,Hibernate,我注意到Hibernate在处理很多关系时表现得不太理想。。。这会引起问题,因为我的关系表也有最后更新的时间戳(由MySQL自动维护),但Hibernate删除/插入太多,破坏了我的时间戳 我的设置: A和B之间的多对多关系 数据库包含与10个B(id从1到10)相关的A(id=1) 当我删除A(id=1)和B(id=10)之间的一个关系时,Hibernate执行以下操作: 删除A(id=1)和B之间的所有关系 插入从A(id=1)到B(id从1到9)的关系 我希望发生的是: 只需删除
- A和B之间的多对多关系
- 数据库包含与10个B(id从1到10)相关的A(id=1)
- 删除A(id=1)和B之间的所有关系
- 插入从A(id=1)到B(id从1到9)的关系
- 只需删除A(id=1)和B(id=10)之间的关系
@Entity
public class A {
@Id @GeneratedValue
private int id;
@ManyToMany(fetch = FetchType.LAZY)
@JoinTable(name="a_b_ref")
private List<B> b;
...
}
@Entity
public class B {
@Id @GeneratedValue
private int id;
@ManyToMany(fetch = FetchType.LAZY, mappedBy="b")
private List<A> a;
...
}
而我想要的是:
delete from a_b_ref where a_id=? and b_id=?
请发布完整的实体映射(单向或双向多对多、级联类型、即时或延迟加载等)和相关代码部分(是否设置对新集合的引用或从持久集合中删除,是否在同一会话或不同会话中加载、删除和保存等)。双向m2m,延迟加载。附上更多细节。
delete from a_b_ref where a_id=?
insert into a_b_ref (a_id, b_id) values (?, ?)
insert into a_b_ref (a_id, b_id) values (?, ?)
insert into a_b_ref (a_id, b_id) values (?, ?)
insert into a_b_ref (a_id, b_id) values (?, ?)
insert into a_b_ref (a_id, b_id) values (?, ?)
insert into a_b_ref (a_id, b_id) values (?, ?)
insert into a_b_ref (a_id, b_id) values (?, ?)
insert into a_b_ref (a_id, b_id) values (?, ?)
insert into a_b_ref (a_id, b_id) values (?, ?)
delete from a_b_ref where a_id=? and b_id=?