如何在Java JPA实体类中为Map接口字段配置JSON类型并解决JsonType识别报错
JsonType类无法识别解决方案
步骤1:引入对应依赖
JsonType 不属于Hibernate官方核心包,是第三方工具库Hypersistence Utils(原Hibernate Types)提供的类,需要先引入对应依赖,注意版本要和你项目使用的Hibernate版本匹配:
- Hibernate 5.4/5.5/5.6版本使用2.x分支依赖
- Hibernate 6.0+版本使用3.x分支依赖
Maven依赖示例
<!-- Hibernate 5.5版本对应依赖 --> <dependency> <groupId>io.hypersistence</groupId> <artifactId>hypersistence-utils-hibernate-55</artifactId> <version>2.16.3</version> </dependency>
Gradle依赖示例
// Hibernate 5.5版本对应依赖 implementation 'io.hypersistence:hypersistence-utils-hibernate-55:2.16.3'
步骤2:导入正确的全限定类名
依赖引入完成后,在实体类头部导入对应包路径即可解决标红问题:
import io.hypersistence.utils.hibernate.type.json.JsonType;
可选:Hibernate 6+ 原生解决方案
如果你使用的是Hibernate 6及以上版本,无需引入第三方依赖,直接使用官方原生的JSON映射注解即可,不需要配置@TypeDefs:
// 直接在字段上添加如下注解即可 @Column(columnDefinition = "json") @JdbcTypeCode(SqlTypes.JSON) private Map<String, String> businessHours;
额外注意事项
- 你提供的数据库迁移SQL存在字段拼写错误:
business_houres应为business_hours,否则执行SQL会提示字段不存在。 - 确认你的数据库版本原生支持JSON类型(如PostgreSQL 9.4+、MySQL 5.7+等),低版本数据库需要做额外兼容处理。
内容的提问来源于stack exchange,提问作者Jack Nickelson
相关产品推荐
相关产品推荐

