2016-09-13 4 views
1

YeSQLを使用してSQLクエリを実行しようとするとエラーが発生します。HikariでラップされたJDBC接続でYeSQLクエリを実行するとエラーが発生する

-- name: find-by-id 
-- Selects the filepath to a menu by id 
SELECT filepath FROM menu WHERE id = :id; 

そして、私はこのよう作成された関数呼び出しています:

db-spec HikariProxyConnection wrapping org.postgresql.jdbc4.Jdbc4Connection is missing a required parameter 

私はこのように私のSQLファイルにfind-by-id機能を定義している私のデータソースは、次のように定義されて

(find-by-id {:id "123"} {:connection (jdbc/get-connection {:datasource datasource)}) 

を:

(def spec {:maximum-pool-size 3 
    :adapter   "postgresql" 
    :username   "user" 
    :database-name  "dbname" 
    :server-name  "localhost" 
    :port-number  5432}) 
(def datasource (make-datasource spec)) 

with-db-transactionに渡して返された接続を使用する場合、全く同じ接続マップを使用できますが、何らかの理由でこのように動作しません。

あなたがデータソースを使用してYeSQLクエリに渡すことができjdbc/get-connectionとの接続オブジェクトを取得するには、明らかにあなたはこのようにそれを作成する必要があります:解決策が見つかり

+0

この場合、エラーメッセージはかなり記述的です。未処理の接続オブジェクト( '{:connection ...}'でラップされていないもの)をどこかの 'jdbc/get-connection'に渡します。 – OlegTheCat

+0

私はこの '{:datasource datasource}'のように 'get-connection'にデータソースを渡しました。返されたオブジェクトを 'with-db-transaction'に使うとうまく動作します。いずれにしても、あなたは正しく、別の '{:connection ...}'でラップする必要がありました。どうもありがとうございました。 – jannikko

答えて

1

(defn get-connection 
    [db] 
    {:connection (jdbc/get-connection {:connection {:datasource datasource})}) 

をいただき、ありがとうございますコメントのヘルプ!

関連する問題