Spring Boot与H2和Oracle的集成

3
我们正在使用liquibase和hibernate构建一个spring boot应用程序。但是现在我们遇到了一些问题。 它可以在H2上运行,但是在切换到oracle时,我们需要添加国际化注释。
@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的映射表之类的东西?


也许可以尝试在Oracle模式下运行h2?spring.datasource.url=jdbc:h2:mem:testdb;Mode=Oracle - Danila Zharenkov
你使用的是哪个版本的h2?我刚在我的项目中测试了一下,使用的是hibernate、spring boot和h2 1.4.196版本。@Nationalized对我来说也很好用。 - Danila Zharenkov
我正在以Oracle模式运行,必须使用Spring Boot 2.0.1。稍后将尝试精确版本。 - MemLeak
1
我猜你的application.properties文件里有这个属性spring.jpa.hibernate.ddl-auto=validate?我重现了你的问题。如果这个属性的值是"none",它会正常工作。如果是"validate",那就会出错。我认为你有两种解决问题的方式。第一种是把这个属性改成"none"或者"update"。第二种是为h2和oracle分别创建2个不同的application.properties文件或者spring profiles。 - Danila Zharenkov
这里有一份很好的文档,介绍如何将您的应用程序属性参数化 https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html - Danila Zharenkov
1个回答

1

solved with

 @Column(name = "created_by", columnDefinition = "nvarchar(255)")

如果我无法访问此实体定义(即它是外部依赖项),该怎么办? - mate00

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接