当前使用版本(必填,否则不予处理)
MP版本: 3.5.3.2 数据库: SQLServer 2016 JDK: 1.8 Springboot: 2.7.17
该问题是如何引起的?(确定最新版也有问题再提!!!)
因不同版本数据库融合, 导致新表和旧表内字段名称不一致, 新表字段全部为 小写SnakeCase, 而旧表全部为大写SnakeCase.
故要对用到的旧表做兼容, 使用 @TableField 进行字段标记.
Springboot 配置文件内, 开启驼峰自动转换(默认), 设置主键如下, 同时标记 @TableField
@TableId(type = IdType.AUTO)
@TableField("USER_ID")
private Integer userId;
期望SQL内字段名称替换结果为 USER_ID, 实际替换结果为 user_id.
当去掉 @TableId 时, 查询列表可以成功, 且SQL日志输出也替换为了 USER_ID
重现步骤(如果有就写完整)
正常配置即可重现
报错信息
同时标记 @TableId 和 @TableField, 报错信息如下
org.springframework.jdbc.BadSqlGrammarException:
### Error querying database. Cause: com.microsoft.sqlserver.jdbc.SQLServerException: 列名 'user_id' 无效。
### The error may exist in net/guodulink/tiny/server/server/UserRepository.java (best guess)
### The error may involve defaultParameterMap
### The error occurred while setting parameters
### SQL: SELECT user_id,ACCOUNT,PASSWORD,STATE,IS_EXA,CREATE_TIME,NAME FROM FMS_USER_INFORMATION
### Cause: com.microsoft.sqlserver.jdbc.SQLServerException: 列名 'user_id' 无效。
; bad SQL grammar []; nested exception is com.microsoft.sqlserver.jdbc.SQLServerException: 列名 'user_id' 无效。
Comment From: miemieYaho
都配置只生效@TableId
Comment From: ovaso
那这个算bug吗, 还是有意为之
Comment From: miemieYaho