我对Clojure非常陌生,我正在使用Clojure,Compojure和java.jdbc创建一个带有POSTGRES数据库的小型Web API。从Jdbc4Array中提取Clojure vec
我的一个表中包含的整数的数组作为它的列中的一个,并且被定义为这样:
(sql/create-table-ddl
:games
[:id :serial "PRIMARY KEY"]
[:active :BOOLEAN "NOT NULL"]
[:players "integer[]" "DEFAULT array[]::integer[]"]
[:player_order "integer[]" "DEFAULT array[]::integer[]"]
[:created_at :timestamp
"NOT NULL" "DEFAULT CURRENT_TIMESTAMP"])
我试图查询整数[]作为这样的一个:
(sql/query postgres [(str "SELECT * FROM games WHERE id=" game-id)])
但POSTGRES返回Jdbc4Array(而不是A VEC):
:player_order #<Jdbc4Array {1,2,3,4}
org.postgresql.jdbc4.Jdbc4Array
我似乎无法弄清楚Ø如何把它变成一个Clojure vec。我看过几个例子,但他们似乎正在使用我不是的流。我正在做这个查询不正确吗?我将如何将其转换为Clojure vec?
你试过访问与调用返回的数据'getResultSet'?你会使用Java互操作来做到这一点。 –
@ChrisMurphy谢谢你的想法。我试过'.getResultSet'和'.getJavaArray',但是当我这样做的时候我得到这个错误:'org.postgresql.util.PSQLException:这个连接已经关闭.' – Mike2012