Spring JPA + H2 问题
Spring JPA + H2 issue
我开始制作一个简单的 spring 启动应用程序。
我的第一步是使用 Spring JDBC 支持,使用默认的 H2 内存数据库。
对于示例数据,我在 src/main/resources.
中有 schema.sql 和 data.sql
所以当 spring 启动时,它还会执行这两个脚本并填充 H2 数据库,我可以通过 H2 控制台访问它。
一切正常,我可以测试控制器返回的正确数据。
然后我添加了 JPA 支持:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
但从那以后,那两个脚本(schema.sql、data.sql)就不再执行了。
是否是 JPA 依赖导致的?让它工作的解决方法是什么?
由于您使用的是 spring-boot-starter-data-jpa
,因此您可以在 application.properties
中设置以下 属性,如果您处于休眠状态并且这是导致问题的原因(很可能),它应该可以工作:
spring.jpa.hibernate.ddl-auto = none
In a JPA-based app, you can choose to let Hibernate create the schema
or use schema.sql, but you cannot do both. Make sure to disable
spring.jpa.hibernate.ddl-auto if you use schema.sql.
schema.sql 是一个基于 spring 的初始化过程,在类路径中使用休眠会与 this.So 冲突,您可以尝试像这样禁用休眠自动配置。
官方doc.
如果不是这样,请分享整个 pom 文件。
我开始制作一个简单的 spring 启动应用程序。
我的第一步是使用 Spring JDBC 支持,使用默认的 H2 内存数据库。 对于示例数据,我在 src/main/resources.
中有 schema.sql 和 data.sql所以当 spring 启动时,它还会执行这两个脚本并填充 H2 数据库,我可以通过 H2 控制台访问它。
一切正常,我可以测试控制器返回的正确数据。
然后我添加了 JPA 支持:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
但从那以后,那两个脚本(schema.sql、data.sql)就不再执行了。
是否是 JPA 依赖导致的?让它工作的解决方法是什么?
由于您使用的是 spring-boot-starter-data-jpa
,因此您可以在 application.properties
中设置以下 属性,如果您处于休眠状态并且这是导致问题的原因(很可能),它应该可以工作:
spring.jpa.hibernate.ddl-auto = none
In a JPA-based app, you can choose to let Hibernate create the schema or use schema.sql, but you cannot do both. Make sure to disable spring.jpa.hibernate.ddl-auto if you use schema.sql.
schema.sql 是一个基于 spring 的初始化过程,在类路径中使用休眠会与 this.So 冲突,您可以尝试像这样禁用休眠自动配置。 官方doc.
如果不是这样,请分享整个 pom 文件。