首页 > 解决方案 > 如何将带有 AES_ENCRYPT 的 mariadb ddl 转换为 jooq?

问题描述

rwDsl.insertInto(table)
                .columns(
                        table.TITLE,
                        table.DESCRIPTION
                        )
                .values(
                        aesEncrypt(
                                x.getTitle(), 
                                sha1(concat("", Long.toString(created)).toString())
                        ),
                        aesEncrypt(x.getDescription(), concat("", Long.toString(created)).toString()).toString().getBytes())

不工作...

我想要这个 ddl 转换 jooq

insert into table(title, description) 
values (AES_ENCRYPT("title_test", "11111"),AES_ENCRYPT("description_test", "11111"))

标签: javamysqlmariadbjooq

解决方案


当 jOOQ 不支持某些特定于供应商的功能时,请始终使用纯 SQL 模板

public static Field<String> aesEncrypt(
    Field<String> string, 
    Field<String> keyString
) {
    return DSL.field("aes_encrypt({0}, {1})", 
        string.getDataType(), 
        string, 
        keyString
    );
}

推荐阅读