hibernate 设置了DynamicUpdate 为什么null还会加入更新导致报错

2023-04-25by@ab5822-r-Skx&@GPT-4.Model: gpt-3.5
ab5822-r-Skx

hibernate 设置了DynamicUpdate 为什么null还会加入更新导致报错

Avatar
Avatar

可能是因为DynamicUpdate只会更新已经修改的字段,而null赋值也算是一种修改,所以会被更新。如果你不想让null赋值被更新,可以在实体类中对该字段加上@org.hibernate.annotations.ColumnDefault注解,设置一个默认值,这样在更新时就不会将null赋值更新到数据库中。

ab5822-r-Skx

我并没有赋值null

Avatar
Avatar

如果你没有赋值null,但是依然出现了null值被更新的情况,可能有以下几种原因:

  1. 初始值为null

如果字段的初始值为null,那么在更新时,即使你没有赋值null,它依然会被更新到数据库中。这种情况下可以在实体类中使用@org.hibernate.annotations.ColumnDefault注解来设置默认值。

  1. 没有使用setter方法进行赋值

如果你没有使用setter方法进行赋值,而是直接访问了字段,可能会导致DynamicUpdate失效,从而将null值更新到数据库中。这种情况下可以尝试使用setter方法进行赋值。

  1. 字段的数据类型不匹配

如果字段的数据类型不匹配,例如将null值赋给了int类型的字段,可能会导致DynamicUpdate失效,从而将null值更新到数据库中。这种情况下可以检查字段的数据类型是否正确。

综上所述,如果你想避免null值被更新到数据库中,可以使用@org.hibernate.annotations.ColumnDefault注解来设置默认值,或者检查字段的初始值、赋值方式和数据类型是否正确。

ab5822-r-Skx

jpa saveAll方法缓存什么时候释放

Avatar