Исправлено сообщение с именем таблицы в dbunit - PullRequest
4 голосов
/ 19 февраля 2010

Данные dbunit заполнены именами таблиц в нижнем регистре в соответствии с определением схемы. Почему вы получаете исправленную таблицу предупреждений каждый раз, я запускаю скрипты для всех баз данных (h2, mysql ..)

[INFO] [dbunit:operation {execution: seed data}] 120 [main] INFO org.dbunit.database.DatabaseDataSet -
        database name=H2
        database version=1.2.128 (2010-01-30)
        database major version=1
        database minor version=2
        jdbc driver name=H2 JDBC Driver
        jdbc driver version=1.2.128 (2010-01-30)
        jdbc driver major version=1
        jdbc driver minor version=2

127 [main] INFO org.dbunit.util.SQLHelper - class org.dbunit.database.DatabaseTableMetaData. Corrected table name: 
        oldValue=user newValue=USER

1 Ответ

1 голос
/ 19 мая 2012

На самом деле DBUnit упоминает об этом.

Вот javadoc DatabaseConnection конструктор

... схема - схема базы данных. Обратите внимание, что имя схемы регистр чувствительны. Это необходимо, потому что схемы с тем же именем, но разные случаи могут сосуществовать в одной базе данных. ...

Я предполагаю, что разработчики DBUnit исправляют регистр имени схемы, чтобы избежать проблемы, которая может быть вызвана этим поведением.

DatabaseConnection - это универсальный суперкласс для всей другой базы данных, указанной DatabaseConnection, например H2DatabaseConnection.

Когда создается DatabaseConnection, DBUnit будет получать метаданные о базе данных, которая, кстати, является реализацией java.sql.DatabaseMetaData, из соединения jdbc.

После этого DBUnit исправит имя схемы, проверив метаданные, поэтому вы всегда получаете сообщения журнала.

DBUnit используйте следующие методы DatabaseMetaData для проверки

boolean storesUpperCaseIdentifiers() throws SQLException;
boolean storesLowerCaseIdentifiers() throws SQLException;

и вот реализация драйвера jdbc H2

public boolean storesUpperCaseIdentifiers() {
  debugCodeCall("storesUpperCaseIdentifiers");
  return true;
}

поэтому таблица «user» становится «USER»

...