所以我有:
pk列:
id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT
具有 id
领域
java.math.BigInteger id field
Map器插入方法:
@Insert("INSERT INTO " +
"table_name (" +
"created_at_ts, " +
"updated_at_ts" +
") " +
"VALUES (" +
"UNIX_TIMESTAMP(), " +
"UNIX_TIMESTAMP()" +
")")
@Options(useGeneratedKeys = true, keyColumn = "id")
void insert(Entity entity);
调用mapper insert方法,如:
commandMapper.insert(entity);
在成功插入一定数量的行之前,所有这些都可以很好地工作。在子表中插入行时,突然出现以下错误:
org.springframework.dao.DataIntegrityViolationException:
### Error updating database. Cause: java.sql.BatchUpdateException:
Out of range value for column 'parent_id' at row 1
下面的结果看起来还可以:
SELECT Auto_increment FROM information_schema.tables WHERE
table_name='table';
-> 32770
但是实体的biginteger id字段的值是错误的:
System.out.println(entity.getId());
-> -32767
如何在实体pojo中得到负值?
显然地:
使用 BigIntegerTypeHandler
不能解决问题
从 BIGINT UNSIGNED
到一个 INT UNSIGNED
从一个 java.math.BigInteger
到 Long
修复它。
但也许还有别的办法?
非常感谢。
1条答案
按热度按时间lndjwyie1#
不得不使用springjdbc和mariadbjava客户端来解决这个问题。