forcedType是否可以接受列的完全限定名称?

时间:2016-08-22 13:16:38

标签: java jooq

我刚才开始使用<forcedType>能够将enum用于已知类型。例如,我有

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

会将admin_tool_featury_type_id列映射到AdminToolFeatureType enum

public enum AdminToolFeatureType {

    BASIC, BASIC_PLUS;

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

现在问题是我总是将该列称为admin_tool_featury_type_id,如果它是FOREIGN KEY,但在 admin_tool_feature_type中,此列简称为{{1 }}:

id

这就是我CREATE TABLE admin_tool_feature_type ( id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50) NOT NULL, -- and so on ... ); 上的JOIN

所带来的问题
admin_tool_add_on_type

问题是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_ID

现在问题是解决这个问题的最简单方法是什么。我不想将AdminToolAddOnType重命名为admin_tool_feature_type.id,因为这会干扰编码标准。

是否有一种简单的方法来扩展admin_tool_feature_type.admin_tool_feature_type_id,以便生成<forcedType>作为admin_tool_feature_type.id类型而不是AdminToolAddOnType

我对标题的意思是,是否可以执行以下操作:

Long

我已经尝试过了。

<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>

但这似乎不可接受。

1 个答案:

答案 0 :(得分:1)

刚才发现,如果您阅读文档中的内容,这实际上是可行的:

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

必须使用|代替,来分隔表达式。我不知道为什么我认为这是逗号分隔。