При наличии такого выражения SPEL в файле application.yml для приложения с весенней загрузкой -
database:
schema: '#{"${ENV_VAR:}".equals("")?"DEMO":"DEMO_${ENV_VAR:}"}'
Следующее работает в коде и печатает подставленное значение, например DEMO_XYZ / DEMO, если $ {ENV_VAR} = XYZ
@Value("${database.schema}")
private String schema;
Но объект JPA Hibernate с аннотацией таблицы не может принять переменную с поддержкой SPEL здесь в качестве схемы -
@Entity
@Table(name = "TABLE_A", schema="${database.schema}") // prints whole spel expression here
public class TableA { ...
Даже ниже не может использовать подставленное значение для SPEL, используя значение по умолчанию -schema -
spring:
jpa:
show-sql: true
properties:
hibernate:
default_schema: ${database.schema} // prints whole value here as well
Похоже, что flyway не может использовать переменную SPEL, как это уже определено в application.yml
spring:
flyway:
jdbc-url: ...
schemas: ${database.schema}
В любом случае для hibernate.default_schema
и flyway.schemas
принять выражение SPEL как ${database.schema}
в том же YML?