2009-04-01 2 views
1

Я пытаюсь использовать dbunit, чтобы проверить некоторые наши коды доступа к базе данных, и я столкнулся с проблемой. Мы используем MySQL 5 в качестве самой базы данных. Я экспортировал небольшой набор данных в FlatXmlDataSet, и когда я устанавливаю тестовый пример, он выдает исключение, в котором говорится: «Данные усечены для столбца« FHEIGHT_FLAG »в строке 1». Колонна FHEIGHT_FLAG определяются какКак мне заставить dbunit хорошо играть с типами данных перечисления MySQL?

enum('t','f') default NULL 

Пути данные enum вставляется в базу данных, если реальное значение для источника данных не соответствует действительности, то столбец фактически содержит «» (пустую строку). Код, использующий базу данных, просто делает предположение, что если значение, предоставленное из базы данных, не является «t», то оно должно быть ложным. Как я могу это сделать? Я не могу исправить исходные данные, поэтому я должен попытаться что-то сделать с тестовым случаем.

ответ

2

Экспорт новый набор данных, используя "select case when FHEIGHT_FLAG = 't' then 't' else 'f' end as FHEIGHT_FLAG, ....(all other columns) .... from tablename";

(Но заказ столбцы, поскольку они находятся в реальной таблице, конечно.)

final String select = "select case when FHEIGHT_FLAG = 't' then 't' else 'f' end as FHEIGHT_FLAG, ....(all other columns) .... from tablename"; 
// database connection 
Class driverClass = Class.forName("package.of.jdbcDriver"); 
Connection jdbcConnection = DriverManager.getConnection(
     "jdbc:url:of:db", "user", "pass"); 
IDatabaseConnection connection = new DatabaseConnection(jdbcConnection); 

// partial database export 
QueryDataSet partialDataSet = new QueryDataSet(connection); 
partialDataSet.addTable("Tablename", select); 

FlatXmlDataSet.write(partialDataSet, new FileOutputStream("mydataset.xml")); 
+0

Это довольно умный. –

0

Я в конечном итоге изменения тестовой колонки FHEIGHT_FLAG базы данных, чтобы быть

enum('','t','f') default NULL 

Таким образом, все пустые строковые значения разрешались вставляться обратно.

 Смежные вопросы

  • Нет связанных вопросов^_^