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

使用H2数据库时遭遇Unknown data type: BASE64错误求助

问题解决:H2数据库DDL执行错误(Unknown data type: "BASE64")

问题原因

你的实体类中@Column注解的columnDefinition字段被错误设置为描述文本"Base64 encoded log data",Hibernate生成DDL语句时,会直接将该值作为列的数据类型写入SQL,导致H2数据库无法识别这个无效类型,进而抛出错误。

解决方案

方案1:移除错误的columnDefinition

你已经给字段添加了@Lob注解,Hibernate会根据数据库方言自动将byte[]类型映射为对应大对象类型(Oracle的BLOB、H2的BLOB),无需手动指定错误的列定义。

修改后的实体类字段代码:

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;

@Column(name = "DATA", nullable = false)
@Lob
private byte[] logData;

方案2:添加列注释(可选)

如果需要给列添加注释说明,不要用columnDefinition(它用于指定SQL列的完整定义,包括类型、约束等),可以使用Hibernate的@Comment注解(需Hibernate 5.4及以上版本),它会根据不同数据库方言自动生成正确的注释语法:

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;

@Column(name = "DATA", nullable = false)
@Lob
@Comment("Base64 encoded log data")
private byte[] logData;

验证修改

修改后重新执行mvn clean install,Hibernate会生成正确的DDL语句,H2数据库能正常识别列类型,构建即可成功。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 15:20:21