将 jsonb 插入 postgresql
Insert jsonb into postgresql
我想创建一个对象并将其保存到数据库中
Log l = new Log();
l.setTimestamp("creation_date", Util.getCurrentTimestamp());
l.setString("app_name", "name");
l.setString("log_type", "type");
l.setLong("user_id", 9l);
l.setLong("module_element_id", 9);
l.set("info", JsonHelper.toJsonString("{}"));
l.save();
我试过多次过滤,但总是出现这个错误:
ERROR: column "info" is of type jsonb but expression is of type character varying
如何插入一个jsonb?
编辑(DDL):
-- Table: public.log
-- 删除 TABLE public.log;
CREATE TABLE public.log
(
id bigint NOT NULL DEFAULT nextval('log_id_seq'::regclass),
creation_date timestamp without time zone,
app_name text,
log_type text,
user_id bigint,
module_element_type bigint,
info jsonb,
CONSTRAINT log_pkey PRIMARY KEY (id)
)
WITH (
OIDS=FALSE
);
ALTER TABLE public.log
OWNER TO postgres;
当前框架中缺少此实现。它已在 https://github.com/javalite/activejdbc/issues/640 中报告。如果您可以帮助追踪所有 Postgres 数据类型的 Postgres 文档,其中此语法与 PreparedStatement 一起使用:
UPDATE my_table SET status = ?::status_type WHERE id = ?
然后我将能够为 PostgreSQL 方言快速实现它:https://github.com/javalite/activejdbc/blob/master/activejdbc/src/main/java/org/javalite/activejdbc/dialects/PostgreSQLDialect.java
2022 年 1 月 4 日更新:
该实现已添加到 SNAPSHOT-3.0 中,并将在 Java 16.
的下一个版本 3.0 中实现
我想创建一个对象并将其保存到数据库中
Log l = new Log();
l.setTimestamp("creation_date", Util.getCurrentTimestamp());
l.setString("app_name", "name");
l.setString("log_type", "type");
l.setLong("user_id", 9l);
l.setLong("module_element_id", 9);
l.set("info", JsonHelper.toJsonString("{}"));
l.save();
我试过多次过滤,但总是出现这个错误:
ERROR: column "info" is of type jsonb but expression is of type character varying
如何插入一个jsonb?
编辑(DDL):
-- Table: public.log
-- 删除 TABLE public.log;
CREATE TABLE public.log
(
id bigint NOT NULL DEFAULT nextval('log_id_seq'::regclass),
creation_date timestamp without time zone,
app_name text,
log_type text,
user_id bigint,
module_element_type bigint,
info jsonb,
CONSTRAINT log_pkey PRIMARY KEY (id)
)
WITH (
OIDS=FALSE
);
ALTER TABLE public.log
OWNER TO postgres;
当前框架中缺少此实现。它已在 https://github.com/javalite/activejdbc/issues/640 中报告。如果您可以帮助追踪所有 Postgres 数据类型的 Postgres 文档,其中此语法与 PreparedStatement 一起使用:
UPDATE my_table SET status = ?::status_type WHERE id = ?
然后我将能够为 PostgreSQL 方言快速实现它:https://github.com/javalite/activejdbc/blob/master/activejdbc/src/main/java/org/javalite/activejdbc/dialects/PostgreSQLDialect.java
2022 年 1 月 4 日更新:
该实现已添加到 SNAPSHOT-3.0 中,并将在 Java 16.
的下一个版本 3.0 中实现