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

Поиск
Список
Период
Сортировка
От Dave Cramer
Тема Re: Use java interface "setArray" to insert the array of user-defined type to table
Дата
Msg-id CADK3HHK7Rs_MYCibf=Uki17-j_ixjOfbkPij4fYuoKZM3HnhRg@mail.gmail.com
обсуждение исходный текст
Ответ на Use java interface "setArray" to insert the array of user-defined type to table  (Charles Kong <kdy77k@gmail.com>)
Список pgsql-interfaces



On Wed, 23 Feb 2022 at 09:58, Charles Kong <kdy77k@gmail.com> 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 

В списке pgsql-interfaces по дате отправления:

Предыдущее
От: Charles Kong
Дата:
Сообщение: Use java interface "setArray" to insert the array of user-defined type to table
Следующее
От:
Дата:
Сообщение: Can 32bit libpq to access 64bit postgres