gpt4 book ai didi

java - 将 MySQL json 列映射到 JPA 会引发错误

转载 作者:行者123 更新时间:2023-11-30 23:44:14 25 4
gpt4 key购买 nike

我想将 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 类型列的链接和资源都会有很大帮助。

最佳答案

Hibernate ORM 中没有json 类型。您可以使用 Hibernate Types project它提供对 JSON 的支持。

要添加对 json 的支持,请将以下 @TypeDef 注释添加到您的实体:

@TypeDef(name = "json", typeClass = JsonStringType.class)

您还需要添加以下 Maven 依赖项:

<dependency>
<groupId>com.vladmihalcea</groupId>
<artifactId>hibernate-types-52</artifactId>
<version>${hibernate-types.version}</version>
</dependency>

查看 this article查看如何将 JsonStringType 与 MySQL 一起使用。

关于java - 将 MySQL json 列映射到 JPA 会引发错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51005297/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com