Hibernate更新表时其他相关联的表外键被设为null的解决方法

前两天在使用Hibernate进行更新操作是,主表更新完成后,出现一个错误:其他三个与修改表相关联的表也进行了更新,并且把外键(关联主表的)设置为null。

看了一些问答,发现这个问题是一个很老的问题,很多解决方法要不就是把casecode设置为none,要么就设置inverse="true",但是我是使用的实体类注解生成的表,最后查找下发现了与inverse作用相似的mappedBy。

解决这个问题只需要让一方处理控制反转就可以了。我们可以把一对多关系中一的一方设置为处理的一方

Hibernate更新表时其他相关联的表外键被设为null的解决方法_第1张图片

"user"是其他关联表中多对一关系的实体类。

Hibernate更新表时其他相关联的表外键被设为null的解决方法_第2张图片

只需要添加mappedBy就ok了

注意:添加了mappedBy之后不能用@JoinColumn,不然会产生冲突。

你可能感兴趣的:(程序员)