有时候我们在创建mysql的表的时候我们会设置某些字段为非空,并且为这些字段设置默认值
但是我们有时候会发现为什么有时候还是会报xxx can not be null
这时候我们可能会觉得我们是不是数据库建表语句有问题,这就可能会浪费很多时间去做了一些无用功!
其实我们在利用有些框架的时候会有这些坑,如:JPA-save方法,他会insert所有的值,并且没有的值也是会传null,这时候就会导致我们报错,或者默认值失效
如对象student中三个属性,id,name,age 如果我们用jpa的save方法他执行的sql就是insert into student(name,age)values(?,?)
但是如果我们只传了一个name,那么上面的方法就会将age的值赋为null传过去
而我们要的操作是 insert into student(name)values(?)不要的值就不要传了,这样mysql的默认值就不会失效了 ^v^
jpa想要动态传值怎么办?
@DynamicInsert
@DynamicUpdate(这个用于更新是没有用的,可以用sql更新)
这两个注解就可以搞定了,一开始我还想着重写save方法,但是网上的那些真的是答案太乱,而且亲测没用,我是新增,网上重写的新增不还是一样的,前面加个判断id,醉了