gpt4 book ai didi

java - 如何使用 Jsonb 库从 Postgres 读取 jsonb

转载 作者:行者123 更新时间:2023-11-29 14:30:15 27 4
gpt4 key购买 nike

我正在尝试从 postgre 表中读取一个 jsonb 字段。我尝试通过以下方式使用 Jsonb 库将其作为 Jsonb 类型读取:

@Entity
@Table(name = "test")
data class Test(
@Id
val id: UUID = UUID.randomUUID(),

@Type(type = "jsonb")
@Column(columnDefinition = "jsonb")
val candidates: Jsonb = JsonbBuilder.create(),

)

但显然,它没有构建给我以下错误:

Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Invocation of init method failed; nested exception is org.hibernate.boot.registry.classloading.spi.ClassLoadingException: Unable to load class [jsonb]

我已经找到了一些帖子和答案。但他们显然都没有使用 this接口(interface)

最佳答案

首先,PostgreSQL jsonb 类型与您使用的 JSR-367 Java API 不对应。那一个序列化工具。您需要的是 JSR-353 javax.json:javax.json-api ,其引用实现是org.glassfish:javax.json .

意思是代替

val candidates: Jsonb = JsonbBuilder.create()

你应该使用

val candidates: JsonObject = Json.createObjectBuilder().build()

让 Hibernate(错误消息显示您正在使用它)5.1、5.2 或 5.3 识别 JSR-353 对象的最简单方法是添加 this type-contributor library到您的项目依赖项。 Hibernate 5.1 是最低要求的版本,从 6.0(或可能早至 5.4)开始,类型系统将被重新设计并变得不兼容。

哦,你不需要 @Type 注释。

关于java - 如何使用 Jsonb 库从 Postgres 读取 jsonb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52939431/

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