Java 带H2和Oracle的Spring引导
我们正在使用liquibase和hibernate构建spring引导应用程序。 但现在我们面临一些问题 它是为H2工作的,但当切换到oracle时,wee需要添加国有化注释Java 带H2和Oracle的Spring引导,java,oracle,hibernate,spring-boot,h2,Java,Oracle,Hibernate,Spring Boot,H2,我们正在使用liquibase和hibernate构建spring引导应用程序。 但现在我们面临一些问题 它是为H2工作的,但当切换到oracle时,wee需要添加国有化注释 @Nationalized public String getCreatedBy() { 但现在,h2模式验证正在中断: Schema-validation: wrong column type encountered in column [created_by] in table [foo]; found [varch
@Nationalized
public String getCreatedBy() {
但现在,h2模式验证正在中断:
Schema-validation: wrong column type encountered in column [created_by] in table [foo]; found [varchar (Types#VARCHAR)], but expecting [nvarchar(255) (Types#NVARCHAR)]
解决这个问题的正确方法是什么?有类似于oracle和h2的映射表吗?用
@Column(name = "created_by", columnDefinition = "nvarchar(255)")
也许可以尝试在oracle模式下运行h2?url=jdbc:h2:mem:testdb;Mode=Oracleand您使用哪个版本的h2?刚刚用hibernate、spring boot和h2版本1.4.196在我的项目上进行了测试。而且@Nationalized对我来说很好。我在oracle模式下运行,zwingend spring boot 2.0.1。probier以后会精确版本吗?我想您的application.properties中有spring.jpa.hibernate.ddl auto=validate属性?我重现了你的问题。如果此属性的值为“无”-则有效。如果“验证”-则会发生错误。我认为你有两种方法来解决你的问题。第一种方法-将此道具更改为“无”或“更新”。第二种方法-为h2和Oracle提供2个不同的application.properties文件或spring配置文件这里有一个很好的文档,介绍如何参数化应用程序属性