Spring,H2为不同的环境定义了不同的注释值

时间:2018-09-04 09:08:38

标签: spring hibernate annotations h2

有关情况的快速概述。 我有一个带有字段“ JSONB”的Postgres数据库,并且已将其连接到我的Spring应用程序,在该应用程序中我将Hibernate用作ORM。我已经定义了自定义JSON类型,并将该类型分配给了相应的Postgres列:

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

这里的一切都工作正常,问题再次出现,因为我还想拥有第二个Test环境,在该环境中,我将数据加载到内存数据库中的H2中。 由于H2不支持JSONB类型,因此我不得不告诉他将其视为“其他”对象,这导致更改 columnDefinition

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

目前,我一直在根据要运行的测试手动更改该字段。

如何配置我的应用程序以更改注释columnDefinition的值?

由于无法评估变量的“时间”,因此无法从application.properties加载值,因此我在考虑“运行配置”设置,但仍然不知道如何进行。任何建议都会有所帮助,谢谢

1 个答案:

答案 0 :(得分:1)

您将需要提供一个ORM.xml。 在ORM.xml中,您可以覆盖列定义。而且,您还可以根据环境设置ORM.xml位置。 (您将需要手动配置它)

不幸的是,您需要进行一些设置才能做到这一点,但请看一下 this question可以提供帮助。