首页 > 解决方案 > 为复合行实现 SQLData 接口

问题描述

我正在关注关于复合类型的官方 psql 用户指南(https://www.postgresql.org/docs/current/rowtypes.html)并尝试为https://impossibl.github.io/pgjdbc-nginventory_item类型实现 SQLData /docs/current/user-guide/#_java_sql_sqldata

据我了解,SQLData 实现的类型映射应附加到活动连接。在我的情况下这并不容易(我正在使用 clojure + clojure.java.jdbc + 连接池)。此外,将其添加到每个连接中感觉不正确。

有没有办法只设置一次映射,以便每个连接都使用它?

SQLData 的虚拟实现(还只读)

(deftype InventoryItem []
  java.sql.SQLData
  (getSQLTypeName [_]
    "inventory_item")
  (readSQL [_ stream _type]
    {:name        (.readString stream)
     :supplier-id (.readInt stream)
     :price       (.readBigDecimal stream)})
  (writeSQL [_ stream]))

标签: jdbcclojurepsqlpgjdbc-ng

解决方案


推荐阅读