Use java interface "setArray" to insert the array of user-defined type to table

From: Charles Kong <kdy77k(at)gmail(dot)com>
To: pgsql-interfaces(at)lists(dot)postgresql(dot)org
Subject: Use java interface "setArray" to insert the array of user-defined type to table
Date: 2022-02-23 14:58:04
Message-ID: CA+PCg_ymO5pJ=zK+m6NGdwTNkZ5gtMQJ+_hNUuaQiwRkCPDhTA@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-interfaces

Hi all,
I use a user-defined type in “schema.sql”
CREATE TYPE infoEntity AS (
"entity_id" bigint,
"seq" integer,
"message" varchar(255)
)

in java code:
java_infoEntity[] infoEntityArray; //java_infoEntity is the class with the
same member variables.
infoEntityArray = new java_infoEntity[3];
infoEntityArray[0] = new java_infoEntity();
....

//info_Entity's type is user-defined type "infoEntity".
sql = "insert into \"T_abc\" (info_Entity) values(?);";
statement = conn.prepareStatement( sql );
Array array = conn.createArrayOf("infoEntity", infoEntityArray);
statement.setArray(1,array);
statement.addBatch();
statement.executeBatch();
....
....
Sql throw exception:
sqlException: SQLState: 22P02 Error Code: 0 Error Message: Batch entry 0
insert into "T_abc" (info_Entity)
values('{"com(dot)xxx(dot)java_infoEntity(at)597d57aa"}')
was aborted: ERROR: malformed record literal: "
com(dot)xxx(dot)java_infoEntity(at)597d57aa"

*How to cope with it?*

Responses

Browse pgsql-interfaces by date

  From Date Subject
Next Message Dave Cramer 2022-02-23 15:00:43 Re: Use java interface "setArray" to insert the array of user-defined type to table
Previous Message trn nrjn 2022-01-21 11:49:17 PREPARE TRANSACTION for specific transaction branch/session