Spring Boot创建表时SQL语法错误:期望标识符
问题原因与解决方案
核心原因
从异常信息里的标记[*]value可以直接定位问题:value是H2数据库的保留关键字,直接将它用作列名会触发SQL语法错误,这和你更换表名的操作无关。
解决方案
有两种可行的处理方式:
方案一:修改列名(推荐)
在Attribute类的value字段上,通过@Column注解指定一个非保留字的列名,比如attr_value:@Column(name = "attr_value") private byte[] value;方案二:转义保留字列名
如果必须保留value作为列名,可以用H2支持的转义方式,通过@Column注解将列名用双引号包裹:@Column(name = "\"value\"") private byte[] value;这种方式需要确保项目中Hibernate的SQL方言配置正确,能识别转义符号。
额外优化提示
你的BaseClass是抽象类且标注了@Entity,这种情况下需要添加@Inheritance注解指定继承策略(比如@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)或SINGLE_TABLE),否则Hibernate可能无法正确生成表结构,不过这不是当前异常的直接原因,但建议补充以避免后续问题。
内容的提问来源于stack exchange,提问作者Mixss
相关产品推荐
相关产品推荐

