Spring, H2 определяют разные значения аннотаций для разных сред - PullRequest
0 голосов
/ 04 сентября 2018

краткий обзор ситуации. У меня есть база данных Postgres с полем «JSONB», и я подключил ее к своему приложению Spring, в котором я использую Hibernate в качестве ORM. Я определил свой пользовательский тип JSON и присвоил этот тип соответствующему столбцу Postgres:

@Column(name = "note", columnDefinition = "jsonb")
@Type(type = "JsonNoteType")
private JsonNote jsonNote;

Все здесь работает нормально, проблема возникает, потому что я также хочу иметь вторую тестовую среду, в которой я загружаю данные в базу данных H2 в памяти. Поскольку H2 не поддерживает тип JSONB, я должен сказать ему, чтобы он воспринимался как «другой» объект, поэтому columnDefinition изменилось:

@Column(name = "note", columnDefinition = "other")
@Type(type = "JsonNoteType")
private JsonNote jsonNote;

На данный момент я менял это поле вручную в зависимости от тестов, которые я хотел запустить.

Как я могу настроить свое приложение для изменения значения столбца аннотацииDefinition?

Я не могу загрузить значение из application.properties из-за «времени», в которое оцениваются переменные, поэтому я больше думал о настройке Run Configuration, но все еще не знаю как. Любое предложение будет полезно, спасибо

1 Ответ

0 голосов
/ 04 сентября 2018

Вам нужно будет предоставить ORM.xml. В файле ORM.xml вы можете переопределить определение столбца. А также вы можете установить местоположение ORM.xml для каждой среды. (Вам нужно будет настроить его вручную)

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

...