Spring、H2为不同的环境定义不同的注释值
快速概述情况。 我有一个带有字段“JSONB”的Postgres数据库,并将其连接到我的Spring应用程序,其中我使用Hibernate作为ORM。我已经定义了自定义JSON类型,并将该类型分配给相应的Postgres列:Spring、H2为不同的环境定义不同的注释值,spring,hibernate,annotations,h2,Spring,Hibernate,Annotations,H2,快速概述情况。 我有一个带有字段“JSONB”的Postgres数据库,并将其连接到我的Spring应用程序,其中我使用Hibernate作为ORM。我已经定义了自定义JSON类型,并将该类型分配给相应的Postgres列: @Column(name = "note", columnDefinition = "jsonb") @Type(type = "JsonNoteType") private JsonNote jsonNote; 这里的一切都很好,问题是因为我还想要第二个测试环境,在这个
@Column(name = "note", columnDefinition = "jsonb")
@Type(type = "JsonNoteType")
private JsonNote jsonNote;
这里的一切都很好,问题是因为我还想要第二个测试环境,在这个环境中,我将数据加载到内存中的H2数据库中。
由于H2不支持JSONB类型,我必须告诉他将其视为“其他”对象,这会导致列定义发生更改:
@Column(name = "note", columnDefinition = "other")
@Type(type = "JsonNoteType")
private JsonNote jsonNote;
目前,我一直在根据我想要运行的测试手动更改该字段
如何配置应用程序以更改注释列定义的值
我无法从application.properties加载值,因为计算变量的“时间”,所以我更多地考虑了运行配置设置,但仍然不知道如何进行。任何建议都会很有帮助,谢谢您需要提供一个ORM.xml。 在ORM.xml中,可以覆盖列定义。您还可以设置每个环境的ORM.xml位置。(您需要手动配置它) 不幸的是,您需要一些设置来完成这项工作,但是请看一下
这可能会有所帮助。这实际上可能是一个很好的解决方案,我看到的唯一问题是,当重新构建整个项目时,导入Maven的依赖关系,此修复程序将被破坏,也许我可以在导入后编写一个补丁文件来重写orm.xml,但我仍然希望有一个更干净的解决方案^^^您可以为每个环境使用相同的构建,并指定运行应用程序时应激活的Spring配置文件(-D参数)(从而设置激活的application-Profile.properties文件)。