当前使用版本(必填,否则不予处理)

3.4.3.3

该问题是如何引起的?(确定最新版也有问题再提!!!)

(最新版中也有此问题) SQL Server中没有 json 类型,因此我们使用了 varchar 类型,但是代码里 pojo 的属性使用了一个特定的类来描述,为了平滑地进行此字段的存取,我们使用了你们提供的 @TableField 注解的 typeHandler 特性,使用了一个 FastjsonTypeHandler,但是我们发现 handler 本身不对 null 的param 进行任何的 json 转换,而是由其父类处理,导致我们不能存入一个在内存中为 null 但在数据库中为 'null'(字符串)的数据。现在的 Json 标准对于 'null' 也是可以进行正确转化的,我推荐在 handler 中添加对 null 的 param 的转化逻辑。 我可以提供 PullRequest

重现步骤(如果有就写完整)

在 SQL server 中添加一个表,表中使用 json 类型做一个字段; Spring 项目中添加一个此表的映射类,在字段对应的属性上添加注解 “@TableField(insertStrategy = FieldStrategy.IGNORED, typeHandler = FastjsonTypeHandler.class)”; 添加一个对应类的 Mapper (extends BaseMapper); 使用此 Mapper 进行 insert,会发现只能插入 null,而不是 'null'

报错信息

PS

如果不推荐添加此逻辑,希望开发者们回复一下不推荐的理由。向你们虚心学习,谢谢!

Comment From: miemieYaho

那你自己重写一个typehandler用吧