public inbox for [email protected]  
help / color / mirror / Atom feed
From: Dave Cramer <[email protected]>
To: Charles Kong <[email protected]>
Cc: [email protected]
Subject: Re: Use java interface "setArray" to insert the array of user-defined type to table
Date: Wed, 23 Feb 2022 10:00:43 -0500
Message-ID: <CADK3HHK7Rs_MYCibf=Uki17-j_ixjOfbkPij4fYuoKZM3HnhRg@mail.gmail.com> (raw)
In-Reply-To: <CA+PCg_ymO5pJ=zK+m6NGdwTNkZ5gtMQJ+_hNUuaQiwRkCPDhTA@mail.gmail.com>
References: <CA+PCg_ymO5pJ=zK+m6NGdwTNkZ5gtMQJ+_hNUuaQiwRkCPDhTA@mail.gmail.com>

On Wed, 23 Feb 2022 at 09:58, Charles Kong <[email protected]> wrote:

> 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.xxx.java_infoEntity@597d57aa"}') was aborted: ERROR:
> malformed record literal: "com.xxx.java_infoEntity@597d57aa"
>
> *How to cope with it?*
>
>
The JDBC driver does not know how to deal with user defined types. You will
have to write code to serialize the type yourself.

Regards,
Dave


view thread (2+ messages)

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: [email protected]
  Cc: [email protected], [email protected], [email protected]
  Subject: Re: Use java interface "setArray" to insert the array of user-defined type to table
  In-Reply-To: <CADK3HHK7Rs_MYCibf=Uki17-j_ixjOfbkPij4fYuoKZM3HnhRg@mail.gmail.com>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox