JDBI Вставка NULL в битовый столбец приводит к java. sql .BatchUpdateException: усечение данных: данные слишком длинные для столбца - PullRequest
0 голосов
/ 11 февраля 2020

При выполнении запроса на пакетное обновление с использованием библиотеки jdbi с запросом, аналогичным приведенному ниже

@SqlBatch("INSERT INTO <table> (<columns>) VALUES (<columnsBind>)" + " ON DUPLICATE KEY UPDATE <updateString>;")

Я получаю ошибку java.sql.BatchUpdateException: Data truncation: Data too long for column bit_column для столбца типа бит (1).

Я пытаюсь вставить в него значение NULL.

Я подтвердил, что столбец обнуляем.

При отладке я вижу, что привязка для именованного значения имеет тип ObjectArgument, а не NullArgument, хотя не проблема для других записей, которые могут нормально обрабатывать нуль.

Я пытался заменить ObjectArgument на NullArgument, но это приводит к java.io.NotSerializableException

Это кто-то сталкивался раньше?

РЕДАКТИРОВАНИЕ: С отредактированной версией сгенерированного объекта ClientPreparedStatement я переименовал столбцы и заменил столбцы с фактическими значениями на другие того же типа. Все нули одинаковы, без кавычек.

INSERT INTO table (not_bit_column_null,bit_column,not_bit_column_null,varchar_column,varchar_column,not_bit_column_null,varchar_column,not_bit_column_null,not_bit_column_null,not_bit_column_null,varchar_column,varchar_column,varchar_column,not_bit_column_null,not_bit_column_null,varchar_column,not_bit_column_null,id,not_bit_column_null) VALUES (null,null,null,'text','text',null,'text',null,null,null,null,'text','text',null,null,'text',null,'22',null) ON DUPLICATE KEY UPDATE not_bit_column_null = null,
bit_column = null,
not_bit_column_null = null,
varchar_column = 'text',
varchar_column = 'text',
not_bit_column_null = null,
varchar_column = 'text',
not_bit_column_null = null,
not_bit_column_null = null,
not_bit_column_null = null,
not_bit_column_null = null,
varchar_column = 'text',
varchar_column = 'text',
not_bit_column_null = null,
not_bit_column_null = null,
varchar_column = 'text',
not_bit_column_null = null,
id = '22',
not_bit_column_null = null;
...