выполнение запроса jdbc в представлении h2 с помощью array_agg возвращает тип clob, а не тип массива? - PullRequest
0 голосов
/ 12 декабря 2018

У меня есть база данных h2, и я пытаюсь создать представление со столбцом, который использует array_agg для некоторых текстовых столбцов:

create view full as 
select av.*, at.tag from anno_v av 
left join
(select id, array_agg(tags) as tag from anno_t group by id) at 
on at.id = av.id

Я использую библиотеку java.jdbc 0.7.0 clojure для запросанабор результатов, и я пытаюсь преобразовать тип массива в вектор замыкания, используя параметр: row-fn (согласно этому примеру ), когда я делаю

(jdbc/query db ["SELECT * FROM full"] {:row-fn my-parser})

, где

(defn my-parser [row] (assoc row :tag (vec (.getArray (:tag row)))))

Я получаю сообщение об ошибке IllegalArgumentException No matching field found: getArray for class org.h2.jdbc.JdbcClob clojure.lang.Reflector.getInstanceField (Reflector.java:271)

Тот же запрос работает на моей реализации представления postgres (тот же синтаксис sql для создания представления, тот же код clojure).Кто-нибудь знает, почему столбец массива преобразуется в сгусток и как я могу вернуть его обратно в массив?Я видел этот комментарий о том, что тип массива jdbc не поддерживается для java dbs, но не уверен, применимо ли это к моему случаю.

спасибо!

...