gpt4 book ai didi

java - PostgreSQL 使用 JPA 和 Hibernate 抛出 "column is of type jsonb but expression is of type bytea"

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:45:54 25 4
gpt4 key购买 nike

这是我的实体类,映射到 postgres (9.4) 中的表我正在尝试将元数据存储为数据库中的 jsonb 类型

@Entity
@Table(name = “room_categories”)
@TypeDef(name = “jsonb”, typeClass = JsonBinaryType.class)
public class RoomCategory extends AbstractEntity implements Serializable {
private String name;
private String code;
@Type(type = "jsonb")
@Column(columnDefinition = "json")
private Metadata metadata;

}

这是元数据类:

public class Metadata implements Serializable {
private String field1;
private String field2;

}

我使用了以下迁移文件来添加 jsonb 列:

databaseChangeLog:
– changeSet:
id: addColumn_metadata-room_categories
author: arihant
changes:
– addColumn:
schemaName: public
tableName: room_categories
columns:
– column:
name: metadata
type: jsonb

我在 postgres 中创建记录时遇到此错误:错误:“元数据”列是 jsonb 类型,但表达式是 bytea 类型提示:您将需要重写或转换表达式。

这是我试图保存在数据库中的请求主体:

  {
“name”: “Test102”,
“code”: “Code102”,
“metadata”: {
“field1”: “field11”,
“field2”: “field12”
}
}

请帮助如何在 java spring boot 应用程序中将 bytea 类型转换为 jsonb

最佳答案

只需通过 ObjectMapper 将您的对象转换为 json 字符串,然后使用 (::jsonb) 转换为 jsonb 类型:

INSERT INTO room_categories (name, code, metadata)
VALUES (?, ?, ? ::jsonb );

(您将需要使用 native 查询来查询存储为 jsonb 的数据)

关于java - PostgreSQL 使用 JPA 和 Hibernate 抛出 "column is of type jsonb but expression is of type bytea",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53847917/

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