这个是现有entity实体类结构图
因为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为准,只是通过注解修改了他映射的其他字段了。
已经验证,第二种方法的确最简便,最合适,但是带来的问题就是:实际上并没有实质性的改变主键字段的id名字,在查询修改的时候还是只能通过操作名字为id的才可行。
现有办法还是基于第一种方法修改:通过写个中间类,继承baseEntity,重写主键id,让主键id名字不为主键取消主键,然后新的实体类则继承新写的中间类,再在各自的主键id上加上tableid注解。
这种方法可以,就是需要自己新建基类,并且适当修改baseService的方法了
扫一扫访问 Blade技术社区 移动端