java - 将 MySQL json 列映射到 JPA 会引发错误
问题描述
我想将 MySQL JSON 列映射到 JPA。我做了一些研究并使用了
@Type( type = "json" )
@Column( columnDefinition = "json" )
但这会引发异常
Exception in thread "main" org.hibernate.boot.registry.classloading.spi.ClassLoadingException: Unable to load class [json]
at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.classForName(ClassLoaderServiceImpl.java:348)
at org.hibernate.boot.internal.ClassLoaderAccessImpl.classForName(ClassLoaderAccessImpl.java:62)
at org.hibernate.cfg.annotations.SimpleValueBinder.fillSimpleValue(SimpleValueBinder.java:538)
at org.hibernate.cfg.SetSimpleValueTypeSecondPass.doSecondPass(SetSimpleValueTypeSecondPass.java:25)
at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.processSecondPasses(InFlightMetadataCollectorImpl.java:1621)
at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.processSecondPasses(InFlightMetadataCollectorImpl.java:1579)
at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:278)
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.metadata(EntityManagerFactoryBuilderImpl.java:858)
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:885)
at org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory(HibernatePersistenceProvider.java:58)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:55)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:39)
at com.savemonk.ce.utility.hibernateAndJPA.JPAUtility.getEntityManagerFactory(JPAUtility.java:12)
at com.savemonk.ce.v2.pricegraph.manager.AddNewPriceTrackRecord.addNewPriceTrackRecordTest(AddNewPriceTrackRecord.java:29)
at com.savemonk.ce.v2.pricegraph.manager.AddNewPriceTrackRecord.main(AddNewPriceTrackRecord.java:23)
Caused by: java.lang.ClassNotFoundException: Could not load requested class : json
at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl$AggregatedClassLoader.findClass(ClassLoaderServiceImpl.java:336)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.classForName(ClassLoaderServiceImpl.java:345)
... 14 more
我知道@Type 是hibernate 的org.hibernate.annotations.Type 在JPA 中映射列的正确方法是什么?
如果需要,我可以发布实体类。任何解释 JPA + JSON-type-column 的链接和资源都会有很大帮助。
解决方案
除了依赖,还需要添加
@TypeDef(name = "json", typeClass = JsonStringType.class)
到您的实体类声明之一
推荐阅读
- ssl - 为什么在尝试执行此 cURL 请求时会出现此证书错误?SSL:没有替代证书主题名称与目标主机名匹配
- python - “NoneType”对象在获取谷歌结果时没有属性“文本”
- python - 当有回溯时显示回溯。什么是 EOF 错误
- c++ - 从 ppm 文件中读取 RGB 值并使用结构(动态数组)将它们存储到名为“Image”的二维数组中
- python - 为什么这段代码在pygame的主循环之外工作
- sql - 检查表中的属性是否具有特定值 SQL
- amazon-web-services - Amazon EC2 实例 - 我上传的文件在哪里?
- jekyll - 杰基尔实际上是做什么的?
- r - 删除R中多列中匹配符号/模式的行
- ssl - 无法从 https 客户端通过 wss 连接到 emqx mqtt 代理