Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring、H2为不同的环境定义不同的注释值_Spring_Hibernate_Annotations_H2 - Fatal编程技术网

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

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; 这里的一切都很好,问题是因为我还想要第二个测试环境,在这个

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

@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文件)。