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

问题描述 投票:1回答:1

快速概述情况。我有一个带有字段“JSONB”的Postgres数据库,我将它连接到我的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;

现在我一直在手动更改该字段,具体取决于我想要运行的测试。

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

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

spring hibernate annotations h2
1个回答
1
投票

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

不幸的是,你需要一些设置来做到这一点,但看看this question它可以帮助。

© www.soinside.com 2019 - 2024. All rights reserved.