使用Hibernate JsonBinaryType时遇ClassNotFoundException问题求助
解决Hibernate处理JSON字段时的ClassNotFoundException问题
1. 补全缺失的Jackson依赖
出现com.fasterxml.jackson.databind.JsonSerializer找不到的异常,核心原因是项目缺少Jackson核心序列化库。根据你的构建工具添加对应依赖:
Maven(pom.xml)
<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.15.2</version> <!-- 建议使用最新稳定版 --> </dependency>
Gradle(build.gradle)
implementation 'com.fasterxml.jackson.core:jackson-databind:2.15.2'
2. 修正实体类的注解用法
JsonBinaryType是Hibernate的自定义类型(实现UserType接口),并非JPA标准的AttributeConverter,所以不能用@Convert注解,要换回@Type:
// entity/User.class import com.vladmihalcea.hibernate.type.json.JsonBinaryType; import org.hibernate.annotations.Type; // 替换掉@Convert注解 @Type(type = "com.vladmihalcea.hibernate.type.json.JsonBinaryType") private String info;
3. 清理无效配置
你代码中configuration.registerTypeOverride(new JsonBinaryType());属于冗余操作,@Type注解已经明确指定了字段类型,直接删除该行即可。
4. 确认Hibernate Types依赖版本匹配
确保引入的Hibernate Types依赖和你的Hibernate主版本一致,比如:
- Hibernate 5.5.x 对应
hibernate-types-55 - Hibernate 6.x 对应
hibernate-types-60
以Maven为例:
<dependency> <groupId>com.vladmihalcea</groupId> <artifactId>hibernate-types-55</artifactId> <version>2.20.0</version> <!-- 用最新兼容版本 --> </dependency>
内容的提问来源于stack exchange,提问作者codebusters
相关产品推荐
相关产品推荐

