Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为JOOQ的DSL.val()使用自定义转换器_Java_Mysql_Sql_Jooq - Fatal编程技术网

Java 为JOOQ的DSL.val()使用自定义转换器

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

在我的应用程序中,使用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 处决 }