2016-08-22 1 views
0

知られているタイプのためにenumを使用できるようになる頃、<forcedType>を使い始めました。たとえば、私はAdminToolFeatureTypeenumに任意のadmin_tool_featury_type_id列をマップしますforcedTypeは完全修飾名を列に受け入れることができますか?

<forcedType> 
    <name>AdminToolFeatureTypeConverter</name> 
    <expression>admin_tool_feature_type_id</expression> 
</forcedType> 

を持っている:

public enum AdminToolFeatureType { 

    BASIC, BASIC_PLUS; 

    public Long getValue() { 
     return this.ordinal() + 1L; 
    }  
} 

今のものは、それがFOREIGN KEYが、テーブルにいた場合、私はいつも、その列admin_tool_featury_type_idを呼び出すことですadmin_tool_feature_typeこの列は、単にidと呼ばれます。

CREATE TABLE admin_tool_feature_type (

    id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY, 

    name VARCHAR(50) NOT NULL, 

    -- and so on ...  
); 

これはadmin_tool_add_on_type上のI JOINとして問題となるものです:

Map<AdminToolAddOnType, AdminToolAddOnDTO> fetchMap = this.ctx.select(
     ADMIN_TOOL_ADD_ON.ID, 
     // .. 
     adminToolAddOnIdToken.field(ADMIN_TOOL_ADD_ON_TYPE.ADD_ON_ID_TOKEN) 
     ) 
    .from(ADMIN_TOOL_ADD_ON) 
    // .. 
    .join(adminToolAddOnIdToken) 
     .on(adminToolAddOnIdToken.field(ADMIN_TOOL_ADD_ON_TYPE.ADMIN_TOOL_FEATURE_TYPE_ID).eq(adminToolFeatureType) 
       // ADMIN_TOOL_ADD_ON_TYPE.ID is type Long 
       // ADMIN_TOOL_ADD_ON.ADMIN_TOOL_ADD_ON_TYPE_ID is type AdminToolAddOnType 
       .and(adminToolAddOnIdToken.field(ADMIN_TOOL_ADD_ON_TYPE.ID).eq(ADMIN_TOOL_ADD_ON.ADMIN_TOOL_ADD_ON_TYPE_ID))) 

問題はADMIN_TOOL_ADD_ON_TYPE.IDLongが、ADMIN_TOOL_ADD_ON.ADMIN_TOOL_ADD_ON_TYPE_IDAdminToolAddOnTypeを入力しているタイプであるということです。

ここで問題は、この問題を解決する最も単純な方法です。 admin_tool_feature_type.idの名前をadmin_tool_feature_type.admin_tool_feature_type_idに変更したくないのは、これがコーディング標準を妨げるためです。

admin_tool_feature_type.idLongではなくAdminToolAddOnTypeとして生成されるように、<forcedType>を簡単に拡張できますか?

私はタイトルの意味は何だったそれのような何かを行うことが可能です場合:私はすでに、例えば試みた

<forcedType> 
    <name>AdminToolFeatureTypeConverter</name> 
    <expression>admin_tool_feature_type_id</expression> 
    <!-- Could be a list of fully qualified names to columns --> 
    <fullyQualified> 
     admin_tool_feature_type.id 
    </fullyQualified> 
</forcedType> 

<forcedType> 
    <name>AdminToolFeatureTypeConverter</name> 
    <expression> 
     <!-- also : my_database.admin_tool_feature_type.id, --> 
     admin_tool_feature_type.id, 
     admin_tool_feature_type_id 
    </expression> 
</forcedType> 

しかしこれは受け入れられないようです。

答えて

1

ちょうどあなたがドキュメントの言うことを読めば、これは実際に可能であることが判明:

<forcedType> 
    <name>AdminToolFeatureTypeConverter</name> 
    <expression> 
     my_database.admin_tool_feature_type.id|admin_tool_feature_type_id 
    </expression> 
</forcedType> 

一つは、式を分離するため|の代わり,を使用する必要があります。なぜ私はそれがコンマ区切りだと思ったのかわかりません。

+0

*「私はそれがコンマで区切られていると思ったのはわかりません」* - これは以前のバージョンのjOOQでもそうでした...誰かがテーブル名にコンマを入れてしまうまで) –

+0

@LukasEder: Dテーブル名にコンマを付けることはできますか? O_oそれは奇妙ですが、多分私はここで私を混乱させてくれた古いバージョンのjOOQからそれを見たかもしれません:) – displayname

+0

* "テーブル名にカンマをつけることができますか?O_o" * - 質問しないでください –

関連する問題