Files
aiot-platform-cloud/viewsh-module-video
lzh b3d76ad00c fix(video): 修复 CommonGBChannel 子类 @TableId 冲突与主键列映射
问题:
1. CommonGBChannel.gbId 的 @TableId 按驼峰转 snake_case 映射到 gb_id 列,
   但实际所有相关表的主键列都是 id
2. StreamProxy/StreamPush 子类自己声明 @TableId(id),与父类 gbId 的
   @TableId 同时扫描到 MyBatis-Plus 会报 "@TableId can't more than one"
3. DeviceChannel/PlatformChannel 没自己的 @TableId,运行时会用父类 gbId
   作为主键查 gb_id 列 → Unknown column 运行时错误

修复:
- CommonGBChannel.gbId 的 @TableId 加 value="id" 显式映射到 id 列
  保证 CommonGBChannelMapper 操作 video_common_gb_channel 时主键正确
- 4 个子类(StreamProxy/StreamPush/DeviceChannel/PlatformChannel)均
  shadow 父类 gbId 字段:
    @TableField(exist = false)
    @Getter(AccessLevel.NONE)
    @Setter(AccessLevel.NONE)
    private Long gbId;
  让 MyBatis-Plus 反射扫描时只看到子类 gbId(标记 exist=false 跳过),
  父类 @TableId 不参与扫描;Lombok 禁用子类 getter/setter,所有业务
  代码的 setGbId/getGbId 继续走父类访问器,字段存储在父类
- DeviceChannel 和 PlatformChannel 给自己的 id 字段加 @TableId(IdType.AUTO)
  显式声明各子表主键

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-22 14:40:13 +08:00
..