私はjOOQで.fetchMap(key、value)を実行しようとしていますが、私はカスタムコンバータを通してキーを処理したいと思います。jOOQ .fetchMap()with Converters
ドキュメントはコンバータの使い方や、.fetchMap()の使い方が非常にはっきりしていますが、両方を組み合わせる方法はわかりません。
私のjOOQバージョン(3.9)からこの機能が欠落している可能性がありますか?
私はjOOQで.fetchMap(key、value)を実行しようとしていますが、私はカスタムコンバータを通してキーを処理したいと思います。jOOQ .fetchMap()with Converters
ドキュメントはコンバータの使い方や、.fetchMap()の使い方が非常にはっきりしていますが、両方を組み合わせる方法はわかりません。
私のjOOQバージョン(3.9)からこの機能が欠落している可能性がありますか?
Converter
(およびBinding
)の実装は、コードジェネレータによってField
参照にバインドされている、またはあなたはこのようにそれを手動で行うことができます。
// Using this static import
import static org.jooq.impl.DSL.*;
// Assuming a VARCHAR column in the database:
DataType<MyType> type = SQLDataType.VARCHAR.asConvertedDataType(
new MyConverter<String, MyType>());
Field<MyType> field = field(name("MY_TABLE", "MY_FIELD"), type);
、あなたはSELECT
文でこのfield
をフェッチするたびに、例えば基礎となるJDBC ResultSet
から結果をフェッチしている間に
Result<Record1<MyType>> result =
DSL.using(configuration)
.select(field)
.from(...)
.fetch();
jOOQは自動的にコンバータを適用します。あなたの結果に元のString
値が決して表示されません。
上記のResultQuery.fetchMap(Field, Field)
メソッドは、fetch()
と短く、Result.intoMap(Field, Field)
です。換言すれば、コンバータはfetchMap()
またはintoMap()
と呼ばれる時間までに自動的に適用されているため、具体的な処理は必要ありません。ただ、fetchMap()
の引数として、あなたのフィールドを使用します。
Map<MyType, OtherType> result =
DSL.using(configuration)
.select(field, otherField)
.from(...)
.fetchMap(field, otherField);
あなたはどのような方法でいくつかの光を当てることができます/関数は、 ''フィールド(名(「MY_TABLE」、「MY_FIELD」)、タイプ) ''で使用されていますか? field()とname()は何ですか? – awm
@awm:確かに、私は答えに暗黙の静的インポートを追加しました –