2016-09-11 11 views
1

私はPostgreSQL 9.5とjOOQ 3.8.4を使っていくつかのテストをしています。jOOQとPostgreSQLドメイン:特定のオブジェクトタイプへのマッピング

具体的には、私は次のようなドメインを作成したい:

CREATE DOMAIN my_something NUMERIC(4,2); 

、私は次のようにタイプを作成したい:

CREATE TYPE my_type (
    something my_something;  
); 

そして最後に、私はA持つテーブルを持っています例えば、フィールドとしての型:

CREATE TABLE (
    id bigserial; 
    type my_type; 
); 

これは、jOOQ 3.8.4がフィールドのマッピングを生成することを示していますをObject(両方ともテーブルレコードとPOJO)に設定します。ドメインがNUMERICを使用しているので、私はBigDecimalを期待していました。

私は間違っていますか?そうでない場合、問題を克服する方法はありますか?

多分customTypesforcedTypesを使用してコンバーターを登録できますが、私はユーザー定義のタイプではうまくいかないと思います!この側の経験は?

答えて

1

PostgreSQL(または他のデータベースの)データ型ドメインは、まだ完全にサポートされていません。確かにあなたがNUMERICmy_type.somethingを書き換えるためにここforcedTypeを使用する必要があり、その間に https://github.com/jOOQ/jOOQ/issues/681

:これは、保留中の機能要求です。詳細はこちら: http://www.jooq.org/doc/latest/manual/code-generation/data-type-rewrites

これは最も簡単な方法です。もちろん、より完全なソリューションのために独自のデータ型バインディングを記述することもできますが、この場合は必要ではないと思います。ここでのデータ型のバインディングに関する詳細情報: http://www.jooq.org/doc/latest/manual/code-generation/custom-data-type-bindings

+1

チップのおかげでルーカス、それはかなりうまく動作します! – JeanValjean

+0

@RobertoTrunfio:それを聞いてうれしいです。 Stack Overflowであなた自身の質問に答えることもできますか(例えば、あなたの質問に部分的な答えを入れるのではなく) –

+0

私は過去にそれをやっていました。私は実際に別の答えを公式化するときにそれをするのが好きではありません。私は泥棒のように感じる。もう一つの選択肢はあなたの答えを豊かにすることでした。私は大変な変更についてはあまり好きではありません。 – JeanValjean

1

Lukas Ederによって示唆されるように、私はちょうど

<forcedType> 
    <name>NUMERIC(4,2)</name> 
    <expression>my_type.something</expression> 
    <types>.*</types> 
</forcedType> 

を追加し、非常によく働きました。

関連する問題