Мы используем EclipseLink для постоянного хранения и настроили EclipseLink для автоматического создания таблиц базы данных и т. Д., Установив для свойства eclipselink.ddl-generation
значение drop-and-create-tables
.
Это работает нормально, однако EclipseLink (и, следовательно, наше приложение) будет весело продолжать работу во время модульных тестов и при реальном запуске веб-приложения, даже если некоторые из операторов DDL не пройдены.
Я заметил это, когда неправильно использовал аннотацию @Index
, и удивился, почему индекс не был создан, пока не заметил в журналах:
org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: org.h2.jdbc.JdbcSQLException:
Column "MY_INDEX_FLD" not found; SQL statement:
CREATE INDEX X_INDEX ON X (MY_INDEX_FLD)
Я действительно хочу знать, если это произойдет. Есть ли какой-нибудь способ сообщить EclipseLink, что он может привести к фатальной ошибке в случае сбоя некоторых операторов DDL?
Я бы хотел, чтобы по крайней мере наши (JUnit) интеграционные тесты не прошли в этом случае.
Бонусные баллы за некоторый способ быть в состоянии игнорировать, если ошибка просто в том, что таблицы уже есть (в случае тестирования с существующей базой данных).