Вот обходной путь, который работает для весенней загрузки с H2 -
это не зависит от того, хотя, так что вы можете сделать
что-то похожее на игру.
Обратите внимание, что это фальшивка и не очень
позволяет тестировать перечисления полностью, но позволяет запускать тесты
по отношению к уже существующим производственным базам данных (где вы не можете просто пойти и изменить
схема) без необходимости писать весь DDL самостоятельно.
Итак, вместо того, чтобы позволить вашей тестовой среде настроить соединительную строку для БД в памяти, сконфигурируйте строку соединения H2 самостоятельно .
Вот как выглядит волшебная настройка в моем случае:
# the next line is very important it names the ddl work
# H2 does not support enums
# In order to fake support for them we have to declare a
# domain called enum and mapped it to a varchar - the size
# I picked at random but it is "good enough" for now.
# H2 will run this before hibernate creates the schema and
# then the schema creation will succeed
spring.datasource.url=jdbc:h2:mem:test;MODE=MySQL;INIT=CREATE DOMAIN IF NOT EXISTS enum as VARCHAR(255);DB_CLOSE_ON_EXIT=FALSE
Магия такова:
CREATE DOMAIN IF NOT EXISTS enum as VARCHAR(255)
это говорит H2, что пользовательский (доменный) тип enum следует рассматривать как varchar - вы, очевидно, можете изменить размер на любой.
Это делается как причина INIT
, которая обеспечивает выполнение до того, как первый бит ddl будет выполнен для него любой framework
Таким образом, в случае Play! значение будет db.default.jdbcUrl
- или, тем не менее, вы определяете ваше тестовое соединение с базой данных (например, в качестве признака)