You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Data JDBC中@Table注解引发JdbcSQLSyntaxErrorException的原因

问题原因

这是H2数据库的标识符大小写规则和JPA注解交互导致的问题,具体拆解:

  • H2的表名存储逻辑:当你执行create table Book_Author创建表时,因为表名没有用双引号包裹,H2会自动将所有未加引号的标识符转换为大写存储,所以数据库里实际存在的表名是BOOK_AUTHOR。

  • @Table注解的SQL生成问题:当你给实体类标注@Table("Book_Author")时,JPA(比如Hibernate)在生成SQL语句时,会把这个大小写混合的表名用双引号括起来(可能是因为全局配置了强制引号标识符,或是识别到名字包含大小写自动添加引号)。此时H2会严格按照大小写查找表,而数据库里只有大写的BOOK_AUTHOR,自然会抛出表不存在的异常。

  • 无@Table时正常的原因:不指定@Table注解时,JPA默认会将实体类名BookAuthor转换为蛇形命名book_author,H2再自动转成大写BOOK_AUTHOR,刚好和数据库里的实际表名匹配,所以能正常操作。

内容的提问来源于stack exchange,提问作者mihhha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 01:57:08