Hibernate执行DDL报错:c_library相关配置缺失排查求助
解决org.hibernate.tool.schema.spi.CommandAcceptanceException:c_library.template_details创建失败
问题核心原因
你遇到的问题本质是Hibernate默认的物理命名策略自动把驼峰式的schema名称cLibrary转换成了下划线分隔的c_library,但你的数据库中并没有c_library这个schema,而配置里指定的默认schema是cLibrary,导致DDL执行时找不到目标schema报错。
Spring Boot默认使用的SpringPhysicalNamingStrategy会自动将驼峰命名转换为下划线分隔的小写格式,这就是为什么明明配置的是cLibrary,却生成了c_library的原因。
解决方案
1. 修改Hibernate物理命名策略(推荐)
在application.properties中添加以下配置,让Hibernate严格保留原命名格式,不自动转换驼峰为下划线:
spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
添加后Hibernate会直接使用你配置的cLibrary作为schema名称执行DDL。
2. 统一schema名称(适配默认命名策略)
如果想保留默认的命名策略,可以:
- 在PostgreSQL中创建
c_libraryschema(全小写下划线格式) - 将
application.properties中的spring.jpa.properties.hibernate.default_schema修改为c_library
3. 清理缓存并重启
修改配置后,清理项目的target/build目录,彻底重启应用,避免Hibernate缓存旧的配置信息导致问题残留。
4. 排查实体类配置
再次确认模板相关实体类TemplateDetails(及其继承的基类)上的@Table注解是否有指定schema="c_library",避免遗漏局部配置。
内容的提问来源于stack exchange,提问作者SHWETA SINGH
相关产品推荐
相关产品推荐

