bigint无符号自动递增用mybatis中断

pxy2qtax  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(491)

所以我有:
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.BigIntegerLong 修复它。
但也许还有别的办法?
非常感谢。

lndjwyie

lndjwyie1#

不得不使用springjdbc和mariadbjava客户端来解决这个问题。

相关问题