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

3.4.1

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

不能算是问题,或者说是我没太弄明白你们这样设计的目的。

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

前提条件 1. 我的实体主键列使用了 @TableId 注解进行标注 2. 我实现了 MetaObjectHandler 重写了 insertFill方法

问题描述 在旧版本,也就是我升级到 3.4.1之前,应该是 2.9几。我只需要通过上面前提条件的两个步骤即可实现自定义主键填充。 但是我升级之后,这一填充逻辑失效,通过调试发现,需要使用 @TableField 注解的 fill 指定。而我的主键列并没有这一指定操作,所以导致 TableInfo 中的 withInsertFill 为 false,就不能调用我自己的填充逻辑。

我的一些尝试 1. 既然需要使用 @TableField指定, 我尝试在 主键列指定,但是并没效果

@TableId(value = "id", type = IdType.ASSIGN_ID)
@TableField(fill = FieldFill.INSERT)
private long id;
  1. 既然主键列使用 @TableField无效,那我就随便找了一个其他字段
@ApiModelProperty("模板名称")
@TableField(value = "name", fill = FieldFill.INSERT)
private String name;

这一次正常调用了我自定义的 insertFill逻辑,并且达到了自定义主键填充的效果。

我实在是没搞明白你们这样改的逻辑,难道说我不用你们的主键生成方案,我就必须要找个非主键列使用 @TableField 指定?即使如此,为什么 @TableId@TableField 注解不能共用或者说让 @TableId 也支持 fill 属性呢?

如果说我的理解有问题,还麻烦解释一下,谢谢!

报错信息

Comment From: miemieYaho

https://mybatis.plus/guide/id-generator.html#spring-boot