java - forcedType 可以接受列的完全限定名称吗?

标签 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此栏简称为 id :

CREATE TABLE admin_tool_feature_type (

    id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,

    name VARCHAR(50) NOT NULL,

    -- and so on ...    
);

这就是我的问题 JOINadmin_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.ID类型为Long但是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>

我已经尝试过,例如

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

但这似乎 Not Acceptable 。

最佳答案

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

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

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

关于java - forcedType 可以接受列的完全限定名称吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39080630/

相关文章:

java - Spring Boot JOOQ 集成 - 编译问题

java - JDBC 连接意外关闭

Java类问题

java - UTC 时区未检测夏令时

java - 调用一个方法但它不起作用

java - 将 JSP 转换为 JSTL

Java : ArrayList<HashMap<Integer, 整数>>

java - 如何使jOOQ引用保留关键字的表名?

java - 如何在 select 语句中从 JOOQ 模型调用 postgresql 函数?

java - 如何进行分页请求 - Spring boot