JOOQとPostgreSQLのシリアルと返信で値を返す
-
26-12-2019 - |
質問
私は、PostgreSQL uris
テーブルをシリアル(自動入力)uri_id
列とString uri
列を持つ。私はJooqを使って罰金を照会することができます:
createDSLContext().select(fieldByName("uri_id")).from(tableByName("uris"))
.where(fieldByName("uri").equal(uri.toString())).fetchOne(0, Integer.class))
.
Java Integer
を返します。しかし、新しいURIを挿入するときは、生成されたuri_id
キーを取り戻したいので、これを試してください。
createDSLContext().insertInto(tableByName("uris"), fieldByName("uri"))
.values(uri.toString()).returning(fieldByName("uri_id")).fetchOne().getValue(0, Integer.class)
.
今回はエラーを得ます:
Exception in thread "main" java.lang.IllegalArgumentException: Field 0 is not contained in list
.
テストとして、uri_id
ステートメントのINSERT
のリテラル値を指定しましたが、それでもエラーが発生しました。
正しいSQLが生成されているように見えます。
insert into "uris" ("uri") values ('http://example.com/') returning "uri_id"
.
しかし返されたレコードは空です。INSERTステートメントにリテラルuri_id
を指定しても、これは当てはまります。
Jooqを使用してPostgreSQL INSERT
ステートメントから自動生成された列を取得する方法は?
所属していません StackOverflow