实现主键非id的自增

Blade 未结 2 1011
杜波
杜波 剑圣 2021-06-30 14:42

bladex2.8.1boot版本

想要实现在entity实体类,在继承baseEntity后,主键列名非“id”的自增

简单来说就是:现有entity主键名必须是“id”,非这个名字的就无法生效 


2条回答
  • 2021-06-30 14:44

    image.png

    这个是现有entity实体类结构图

    0 讨论(0)
  • 2021-06-30 14:50

    因为BaseEntity指定了主键id,这个是无法修改的,如果要实现非id作为主键,并且不新建基类,有两种方法:

     1. 继承BaseEntity并且重写覆盖id字段,并且加上 @TableField(exist = false)。新建自定义的id字段比如cid,然后加上注解 @TableId(value = "cid", type = IdType.AUTO)

     2. 继承BaseEntity并且重写覆盖id字段,然后加上注解 @TableId(value = "cid", type = IdType.AUTO)


    推荐使用第二种。这样其他的业务代码不需要修改,主键还是以id为准,只是通过注解修改了他映射的其他字段了。

    作者追问:2021-06-30 15:40

    已经验证,第二种方法的确最简便,最合适,但是带来的问题就是:实际上并没有实质性的改变主键字段的id名字,在查询修改的时候还是只能通过操作名字为id的才可行。

    现有办法还是基于第一种方法修改:通过写个中间类,继承baseEntity,重写主键id,让主键id名字不为主键取消主键,然后新的实体类则继承新写的中间类,再在各自的主键id上加上tableid注解。


    回答: 2021-06-30 20:48

    这种方法可以,就是需要自己新建基类,并且适当修改baseService的方法了

    0 讨论(0)
提交回复