我目前有一个包含2个配置文件的spring boot应用程序: application.yaml application-test.yaml 。应用程序测试配置文件已正确加载,并且该文件中的所有设置均按预期工作。

但是我特别有一个设置是spring.jpa.hibernate.ddl-auto ='update'的问题。在 application.yaml 文件中定义此设置后,它将导致我的JPA单元测试失败,并出现“未找到表“PG_CLASS””异常。
我尝试使用应用程序测试配置文件中的其他值覆盖此设置,但无济于事。

我的完整配置文件如下:

application.yaml

#Configure Postgres backend datasource
spring.datasource.driverClassName: org.postgresql.Driver
spring.datasource.url: jdbc:postgresql://ec2-54-75-233-146.eu-west-1.compute.amazonaws.com:5432/xxxx?user=xxxx&password=xxxxx&sslmode=require
spring.jpa.properties.hibernate.temp.use_jdbc_metadata_defaults: false
spring.jpa.database-platform: org.hibernate.dialect.PostgreSQLDialect
spring.jpa.hibernate.ddl-auto: update

application-test.yaml
spring.datasource.usernam: sa
spring.datasource.url: jdbc:h2:mem:tests;DB_CLOSE_DELAY=-1;MODE=PostgreSQL;DB_CLOSE_ON_EXIT=FALSE;
spring.datasource.driverClassName: org.h2.Driver
spring.jpa.properties.hibernate.temp.use_jdbc_metadata_default: false
spring.jpa.database-platform: org.hibernate.dialect.H2

在我的application.yaml文件中取消注释“spring.jpa.hibernate.ddl-auto:更新”设置不会解决该问题。但我想保持启用状态。有任何想法吗?

最佳答案

上面的错误似乎是由Hibernate使用错误的方言(PostgreSQL而不是H2)引起的。
也许尝试在application-test.yml中添加以下内容:

spring.datasource.driverClassName: org.h2.Driver
spring.jpa.properties.hibernate.dialect: org.hibernate.dialect.H2Dialect

09-11 19:18
查看更多