org.springframework.dao.DataIntegrityViolationException: Error attempting to get column 'company_id' from result set. Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLDataException: '1.46335159215351398E18' in column '2' is outside valid range for the datatype INTEGER. ; '1.46335159215351398E18' in column '2' is outside valid range for the datatype INTEGER.; nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLDataException: '1.46335159215351398E18' in column '2' is outside valid range for the datatype INTEGER.
大概就是告诉我第二个元素超出预期,类型为Integer
前置条件如下:
pojo:
@Data
public class CompanyBadge {
@TableId(value = "id",type = IdType.ASSIGN_ID)
private Long id;
private Long companyId;
private Long badgeId;
private Integer isEnable;
private Date created;
private Date updated;
public CompanyBadge(Long companyId, Integer isEnable) {
this.companyId = companyId;
this.isEnable = isEnable;
}
}
操作:
public Badge queryCompanyBadgeByCompanyId(Long companyId) {
LambdaQueryWrapper queryCompanyBadge = new LambdaQueryWrapper<>();
queryCompanyBadge.eq(CompanyBadge::getCompanyId, companyId);
queryCompanyBadge.eq(CompanyBadge::getIsEnable, SwitchEnum.ACTIVATED_STATE.getSwitch());
queryCompanyBadge.orderByDesc(CompanyBadge::getUpdated);
List companyBadges = companyBadgeMapper.selectList(queryCompanyBadge);
// 长度异常
if (companyBadges.size() != 1)
this.badgeRepeatedActivationFix(companyBadges);
// 数据正常
return badgeMapper.selectById(companyBadges.get(0).getBadgeId());
}
mybatis映射:
public interface CompanyBadgeMapper extends baseMapper{ }
数据库设计:
尝试使用较小的数字查询时,查询正常,一旦使用自增的雪花id就显示超出限制并且类型为Integer;可我明明是Long类型
解决多次尝试无果后,我渐渐删除多余的东西,当我删除pojo中的构造
public CompanyBadge(Long companyId, Integer isEnable) {
this.companyId = companyId;
this.isEnable = isEnable;
}
查询正常,,,,之前为了生产测试数据方便遗留的构造;;
限制就是不清楚为什么这个构造会导致查询的时候显示大小超出最大值,并且把companyId属性的Long类型映射成了Integer类型,
并且当我把唯一的一个IsEnable也设置成Long的时候问题也解决了,又是因为什么造成这两个的类型错乱了呢,,,,求大佬告知



