我正在试着从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]我找到了一些帖子和答案。但显然他们都没有使用这 api。
发布于 2018-10-23 06:44:27
首先,PostgreSQL jsonb类型与您正在使用的JSR-367 Java不相对应。那个序列化工具。您需要的是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对象的最简单方法是将此类型贡献者库添加到项目依赖项中。Hibernate 5.1是最低要求的版本,从6.0开始(或者最早可能是5.4),类型系统将被重新设计并使其不兼容。
哦,您将不需要使用这个@Type注释。
https://stackoverflow.com/questions/52939431
复制相似问题