gpt4 book ai didi

postgresql - 如何将 JsonNode 参数(micronaut + kotlin)保存为 postgres 数据库中的 jsonb

转载 作者:行者123 更新时间:2023-12-03 07:59:59 27 4
gpt4 key购买 nike

我正在尝试保存一个具有 JsonNode 属性的实体,并且必须将其转换为 jsonb 才能存储在 postgres 数据库中。

这是数据库表:

CREATE TABLE IF NOT EXISTS configuration_data (
id SERIAL NOT NULL PRIMARY KEY,
namespace_name TEXT NOT NULL,
dimension_id TEXT NOT NULL,
dimension_value TEXT,
path TEXT,
data JSONB,
version BIGINT DEFAULT 0
);

这是实体:

@MappedEntity(value = "configuration_data")
data class ConfigurationDataEntity(
@field:Id @GeneratedValue
val id: Long,
@MappedProperty("namespace_name")
val namespaceName: String,
@MappedProperty("dimension_id")
val dimensionId: String,
@MappedProperty("dimension_value")
val dimensionValue: String,
@MappedProperty("path")
val path: String,
@MappedProperty("data")
val data: JsonNode,
@MappedProperty("version")
val version: Long,
)

我正在尝试将这样的实体保存到存储库中:

val entity = ConfigurationDataEntity(1L, coordinates.namespace, "acc", "abc", "path", data, 1L)

repository.save(entity)

我收到的错误如下:

Caused by: io.micronaut.data.exceptions.DataAccessException: Error executing PERSIST: Unable to set PreparedStatement value: Can't infer the SQL type to use for an instance of com.fasterxml.jackson.databind.node.ObjectNode. Use setObject() with an explicit Types value to specify the type to use.

我想这是因为 postgres 无法将 jsonNode 存储在 jsonb 对象中,但我不知道如何将 JsonNode 转换为 jsonb。

提前非常感谢您:)

最佳答案

已将此注释添加到字段中:

@field:TypeDef(type = DataType.JSON)

所以实体仍然是这样的:

@MappedEntity(value = "configuration_data")
data class ConfigurationDataEntity(
@field:Id @GeneratedValue
val id: Long,
@MappedProperty("namespace_name")
val namespaceName: String,
@MappedProperty("dimension_id")
val dimensionId: String,
@MappedProperty("dimension_value")
val dimensionValue: String,
@MappedProperty("path")
val path: String,
@MappedProperty("data")
**@field:TypeDef(type = DataType.JSON)**
val data: JsonNode,
@MappedProperty("version")
val version: Long,
)

关于postgresql - 如何将 JsonNode 参数(micronaut + kotlin)保存为 postgres 数据库中的 jsonb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74653879/

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