Итак, у меня есть:
столбец PK:
id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT
объект POJO с полем id
java.math.BigInteger id field
метод вставки сопоставления:
@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);
Вызов метода вставки сопоставления, например:
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
исправляет это.
Но может быть другой способ?
Большое спасибо.