我正在使用《 Spring in Action 5th Edition》一书来学习Spring。它告诉我写一些由H2数据库和schema.sql data.sql简化的jdbc代码。有效。然后它告诉我通过在pom.xml中包含spring-boot-starter-data-jpa软件包来切换到JPA。但是,我发现schema.sql和data.sql没有执行,因为数据库架构与我在schema.sql中写的不同,并且里面没有数据。
给人的印象是,休眠通过查看@Entity注释的类为我创建了表。它对我不起作用。我做了一些谷歌搜索,并添加了一个属性设置来关闭创建表操作。但是,该架构与本书在上一节中在schema.sql中编写的内容不同。例如,有一个Java对象字段“ createdAt”,在schema.sql中被定义为“ createdAt”(这本书是这样写的),但是休眠状态是“ created_at”。
答案 0 :(得分:1)
我们必须更改命名策略,以防止createdAt
成为created_at
spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
注意:spring.jpa.hibernate.naming.strategy不是使用Hibernate 5实现Spring JPA的受支持属性。
对于Spring Boot 1.4.x
spring.jpa.hibernate.naming.implicit-strategy=org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyJpaImpl
spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl