我有一个单向一对多的用户实体,其中包含一组联接列的角色,如
@OneToMany(orphanRemoval = true, cascade = CascadeType.ALL, fetch = FetchType.EAGER)
@JoinColumn(name="user_ref")
private Set<Role> roles;
但是,当我从集合中删除角色并保留用户时,Hibernate坚持执行预删除:update role set user_ref=null where user_ref=?
这是由于数据库外键约束而导致的。
@Column(name = "user_ref", nullable = false)
private int userId;
(same表示可更新=false)
谢谢你的指点,尼克
1条答案
按热度按时间klr1opcd1#
当您将单向一对多Map时,角色实体中不应该有userId。
此外,还有更好的方法来MapUser和Role之间的关系,以避免使用这些更新语句,例如双向一对多或单向多对一。
OneToMany