#java #oracle #views #dbunit #unitils
#java #Oracle #Вид #dbunit #unitils
Вопрос:
Кажется, это простой вопрос. У меня есть несколько тестов unitils в приложении spring. База данных содержит некоторые представления Oracle, и я просто хочу вставить dataset в эти представления. Я знаю, что можно задать параметры для DBUnit (свойства типа таблицы). Но я ничего не нахожу для unitils.
Существуют ли какие-либо свойства unitils для вставки dataset в представления?
Спасибо за помощь
Комментарии:
1. Вставки могут выполняться только в «простых» представлениях (представлениях, основанных только на одной таблице). Вы не можете вставлять записи в представления, которые являются результатами объединений в нескольких таблицах. Первое, что вам нужно сделать, это определить, можете ли вы вставить в представление.
2. Вероятно, вы хотите добавить данные в таблицы, которые фактически используются для создания представлений…
3. Ну, представления созданы для переключения на другой набор таблиц в БД без изменения кода Java…
4. Возможно, для вашей организации было бы неплохо внедрить надлежащий уровень DAO, чтобы изменения в базе данных не так сильно влияли на ваш проект в будущем?
Ответ №1:
Хорошо, я думаю, я нашел способ настроить unitils. Но для этого нужен некоторый Java-код. Я протестировал это решение, кажется, оно работает.
Сначала я нахожу некоторые свойства в unitils (unitils.properties):
unitils.module.dbunit.className=org.unitils.dbunit.DbUnitModule
unitils.module.dbunit.runAfter=
unitils.module.dbunit.enabled=true
Итак, кажется, можно переопределить DBUnitModule следующим образом
public class DbUnitModule extends org.unitils.dbunit.DbUnitModule implements Module {
/*
* (non-Javadoc)
*
* @see org.unitils.dbunit.DbUnitModule#getDbUnitDatabaseConnection(java.lang.String)
*/
@Override
public DbUnitDatabaseConnection getDbUnitDatabaseConnection(final String schemaName) {
DbUnitDatabaseConnection dbConnection = super.getDbUnitDatabaseConnection(schemaName);
dbConnection.getConfig().setProperty("http://www.dbunit.org/properties/tableType", new String[] { "VIEW", "TABLE" });
return dbConnection;
}
}
А затем измените конфигурацию в unitils.properties.
Комментарии:
1. только : unitils.module.dbunit.className=your.package. YourClassExtendsDbUnitМодуль