快速概述情况。我有一个带有字段“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加载值,因为评估变量的“时间”,所以我更多地考虑了运行配置设置,但仍然不知道如何。任何建议都会有所帮助,谢谢
您需要提供ORM.xml。在ORM.xml中,您可以覆盖列定义。您还可以为每个环境设置ORM.xml位置。 (您需要手动配置它)
不幸的是,你需要一些设置来做到这一点,但看看this question它可以帮助。