Разобрать массив UUID - PullRequest
       9

Разобрать массив UUID

0 голосов
/ 21 февраля 2019

У меня проблемы с анализом массива UUID с jOOQ и PostgreSQL.У меня есть следующий запрос:

context
    .select(Tables.T1.IDENTIFIER)
    .select(PostgresDSL.array(context.select(Tables.T2.IDENTIFIER).from(Tables.T2).where(<omitted>)).as("_references"))
    .from(Tables.T1)
    .fetch();

Это соответствует следующей структуре таблицы:

t1(identifier uuid primary key)
t2(identifier uuid primary key, t1_identifier uuid foreign key t1(identifier))

При выполнении этого запроса я получаю следующее исключение:

org.jooq.exception.DataTypeException: Cannot convert from e472b684-0b04-4799-a3e1-a31711a78182 (class org.postgresql.util.PGobject) to class java.util.UUID
    at org.jooq.tools.Convert$ConvertAll.fail(Convert.java:1166)
    at org.jooq.tools.Convert$ConvertAll.from(Convert.java:1055)
    at org.jooq.tools.Convert.convert0(Convert.java:321)
    at org.jooq.tools.Convert.convert(Convert.java:313)
    at org.jooq.tools.Convert.convert(Convert.java:385)
    at org.jooq.impl.DefaultBinding$DefaultUUIDBinding.get0(DefaultBinding.java:3805)
    at org.jooq.impl.DefaultBinding$DefaultUUIDBinding.get0(DefaultBinding.java:3752)
    at org.jooq.impl.DefaultBinding$AbstractBinding.get(DefaultBinding.java:774)
    at org.jooq.impl.DefaultBinding$DefaultArrayBinding.pgGetArray(DefaultBinding.java:1095)
    at org.jooq.impl.DefaultBinding$DefaultArrayBinding.get0(DefaultBinding.java:1032)
    at org.jooq.impl.DefaultBinding$DefaultArrayBinding.get0(DefaultBinding.java:911)
    at org.jooq.impl.DefaultBinding$AbstractBinding.get(DefaultBinding.java:774)
    at org.jooq.impl.CursorImpl$CursorIterator$CursorRecordInitialiser.setValue(CursorImpl.java:1771)
    at org.jooq.impl.CursorImpl$CursorIterator$CursorRecordInitialiser.operate(CursorImpl.java:1740)
    at org.jooq.impl.CursorImpl$CursorIterator$CursorRecordInitialiser.operate(CursorImpl.java:1705)
    at org.jooq.impl.RecordDelegate.operate(RecordDelegate.java:125)
    at org.jooq.impl.CursorImpl$CursorIterator.fetchNext(CursorImpl.java:1669)
    at org.jooq.impl.CursorImpl$CursorIterator.hasNext(CursorImpl.java:1636)
    at org.jooq.impl.CursorImpl.fetchNext(CursorImpl.java:408)
    at org.jooq.impl.CursorImpl.fetch(CursorImpl.java:394)
    at org.jooq.impl.CursorImpl.fetch(CursorImpl.java:301)
    at org.jooq.impl.AbstractResultQuery.execute(AbstractResultQuery.java:297)
    at org.jooq.impl.AbstractQuery.execute(AbstractQuery.java:350)
    at org.jooq.impl.AbstractResultQuery.fetch(AbstractResultQuery.java:323)
    at org.jooq.impl.SelectImpl.fetch(SelectImpl.java:2700)

Я делаю что-то явно не так?Я считаю, что это работало нормально, когда идентификаторы были типа integer, но начало сбой, когда я переключился на uuid.

Я использую jOOQ 3.11.9 с PostgreSQL 11.

...