jpa Hibernate空值化不可空Map

x33g5p2x  于 2022-11-14  发布在  其他
关注(0)|答案(1)|浏览(176)

我有一个单向一对多的用户实体,其中包含一组联接列的角色,如

@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)
谢谢你的指点,尼克

klr1opcd

klr1opcd1#

当您将单向一对多Map时,角色实体中不应该有userId。
此外,还有更好的方法来MapUser和Role之间的关系,以避免使用这些更新语句,例如双向一对多或单向多对一。
OneToMany

相关问题