一、問題描述
1 @Data 2 @EqualsAndHashCode(callSuper = true) 3 4 @Builder 5 6 @TableName("company_user") 7 8 public class CompanyUserPO extends SuperEntity { 9 10 /** 11 12 * 企業ID 13 14 */ 15 16 private String companyId; 17 18 /** 19 20 * 是否刪除,1為刪除,0為未刪除 21 22 */ 23 24 private int deleteFlag; 25 26 // ...省略部分代碼... 27 28 } 29 30 31 public interface CompanyUserMapper extends BaseMapper<CompanyUserPO> { 32 33 } 34 35 private void checkIfRegistered(String phone) { 36 37 QueryWrapper<CompanyUserPO> queryCompanyUser = new QueryWrapper<>(); 38 39 queryCompanyUser.eq("delete_flag", 0); 40 41 queryCompanyUser.eq("phone_number", phone); 42 43 CompanyUserPO existCompanyUser = companyUserMapper.selectOne(queryCompanyUser); 44 45 // ...省略部分代碼... 46 47 }
在selectOne的時候報錯:
nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLDataException: '1.24552615981764198E18' in column '4' is outside valid range for the datatype INTEGER.
二、問題發現
直接在字段上加上@TableField(typeHandler = StringTypeHandler.class, jdbcType = JdbcType.VARCHAR)或者配置mapper.xml文件都報同樣的錯誤,排除是mybatis plus的問題。注釋掉實體類上的@Builder后發現錯誤消失,確定是Lombok插件的問題。
三、問題解決
去掉實體類上的
@Builder注解或者再添加上
@AllArgsConstructor和@NoArgsConstructor兩個注解。