使用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
相关产品推荐
相关产品推荐

