Я делаю некоторые модульные тесты с использованием DBUnit. Я могу правильно вставить набор данных из XML-файла, но после того, как все будет завершено, я не смогу очистить набор данных.DBUnit throwing NoSuchColumnException при удалении набора данных
Ниже моя схема таблицы для столбца ID (я пропущены другие столбцы здесь):
FIELD TYPE COLLATION NULL KEY DEFAULT Extra PRIVILEGES
----------- ---------------- ----------------- ------ ------ ------------ -------------- -------------------------------
ID INT(11) UNSIGNED (NULL) NO PRI (NULL) AUTO_INCREMENT SELECT,INSERT,UPDATE,REFERENCES
Ниже XML sataset:
<dataset>
<MY_TABLE NAME="NISAY" />
</dataset>
Я использую FlatXmlDataSetBuilder
для создания набора данных , При создании я использую InsertIdentityOperation.INSERT.execute(iConnection, dataSet);
и для удаления Я использую InsertIdentityOperation.DELETE.execute(iConnection, dataSet);
Набор данных вставлен должным образом в базу данных, но в то время как удаление, оно проливает ниже исключение:
org.dbunit.dataset.NoSuchColumnException: MY_TABLE.ID - (Non-uppercase input column: ID) in ColumnNameToIndexes cache map. Note that the map's column names are NOT case sensitive.
at org.dbunit.dataset.AbstractTableMetaData.getColumnIndex(AbstractTableMetaData.java:117)
at org.dbunit.dataset.AbstractTable.getColumnIndex(AbstractTable.java:78)
at org.dbunit.dataset.DefaultTable.getValue(DefaultTable.java:197)
at org.dbunit.operation.AbstractBatchOperation.execute(AbstractBatchOperation.java:189)
Просто, чтобы проверить, что каждая вещь собственно, я удалил unsigned
ограничение из столбца ID и использовал набор данных ниже:
<dataset>
<MY_TABLE ID="-99" NAME="NISAY" />
</dataset>
Используя описанное выше, все работало нормально. Однако идентификатор должен быть unsigned
. Как сообщить DBUnit игнорировать основной ключ при удалении? Я пробовал использовать фильтры, но не уверен, правильно ли они настроены.