当前使用版本(必填,否则不予处理)
3.4.2
该问题是如何引起的?(确定最新版也有问题再提!!!)
业务
重现步骤(如果有就写完整)
- 当前端 要清除选择框的值后传到后端 VO接收,字段更新问题,对于String类型的 字段 ,前端可以传 空字符串解决。但是 对于数字类型Long类型传什么能触发saveOrUpdate数据库更新呢。 只能给所有Long类型表关联ID字段加 @TableField(updateStrategy= FieldStrategy.IGNORED) 吗
报错信息
没有
Comment From: qmdx
注解允许置空 @TableField(updateStrategy= FieldStrategy.IGNORED) 或者 wrapper.set("字段", 。。。)
或者 xml 自己写 SQL
Comment From: liuzhe101
这样是可以解决 但都是不全面(如果加到实体类,其他接口给实体VO未赋值,会造成错误更新)或者很麻烦(接口都需要wrapper.set )或者说saveOrUpdate不适用进行保存或更新操作。 能否有其他后期优化,比如字段值是某值的时候 更新的时候就全局更新为null。 这样是不是间接避免了歧义。传了Long字段 空字符串未更新,或者 未传 但配了@TableField(updateStrategy= FieldStrategy.IGNORED)又更新了的问题。
Comment From: liuzhe101
注解允许置空
@TableField(updateStrategy= FieldStrategy.IGNORED)或者 wrapper.set("字段", 。。。) 或者 xml 自己写 SQL
使用@TableField(updateStrategy= FieldStrategy.IGNORED) 在使用 saveOrUpdate 不行, 通过实体接受参数。 空传过来。Long类型字段接受。 都是null 传不传都会更新为空。有问题。 如果采用 wrapper.set("字段", 。。。) 我有怎么判定 更新不更新。这个字段呢。因为获取到都是 null。。
Comment From: qmdx
注解允许置空
@TableField(updateStrategy= FieldStrategy.IGNORED)或者 wrapper.set("字段", 。。。) 或者 xml 自己写 SQL使用@TableField(updateStrategy= FieldStrategy.IGNORED) 在使用 saveOrUpdate 不行, 通过实体接受参数。 空传过来。Long类型字段接受。 都是null 传不传都会更新为空。有问题。 如果采用 wrapper.set("字段", 。。。) 我有怎么判定 更新不更新。这个字段呢。因为获取到都是 null。。
如何判断是业务上的问题,这个没有标准答案