Java 为JOOQ的DSL.val()使用自定义转换器
在我的应用程序中,使用java.util.UUID标识一段内容。在数据库中存储信息时,我使用的对应MySQL数据类型是BINARY16。二进制文件的默认JDBC数据类型是byte[]。所以我有一个自定义的org.jooq.Converter在UUID和byte[]之间进行转换 我有一个用例,在这个用例中,我需要将一条记录从一个表复制到同一个表中,但只复制某些列,而不是全部。在我发布的原始问题中,以下是解决方案 公共无效copyUUID源,UUID目标{ jooq.插入人 .columnsPERSON.ID,PERSON.FNAME,PERSON.LNAME 。选择SelectValTarget、PERSON.FNAME、PERSON.LNAME .fromPERSON .wherePERSON.ID.eqsource 处决 } 但是执行这段代码导致了一个异常 数据截断:数据对于第1行的列“id”太长 我发现DSL.val没有使用我现有的自定义转换器将UUID转换为字节[]。如何强制DSL.val函数使用自定义转换器?解决方案:使用DSL.valjava.lang.Object值、数据类型,而不仅仅是DSL.valjava.lang.Object值 以下是更新的代码段 公共无效copyUUID源,UUID目标{ 数据类型uuidType=SQLDataType.BINARY .asConvertedDataTypenew UUIDINARYCONVERTER; jooq.插入人 .columnsPERSON.ID,PERSON.FNAME,PERSON.LNAME 。选择SelectValTarget、uuidType、PERSON.FNAME、PERSON.LNAME .fromPERSON .wherePERSON.ID.eqsource 处决 }Java 为JOOQ的DSL.val()使用自定义转换器,java,mysql,sql,jooq,Java,Mysql,Sql,Jooq,在我的应用程序中,使用java.util.UUID标识一段内容。在数据库中存储信息时,我使用的对应MySQL数据类型是BINARY16。二进制文件的默认JDBC数据类型是byte[]。所以我有一个自定义的org.jooq.Converter在UUID和byte[]之间进行转换 我有一个用例,在这个用例中,我需要将一条记录从一个表复制到同一个表中,但只复制某些列,而不是全部。在我发布的原始问题中,以下是解决方案 公共无效copyUUID源,UUID目标{ jooq.插入人 .columnsPERS