Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.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 插入在MySQL和JOOQ中使用一些默认值进行选择_Java_Mysql_Sql_Jooq - Fatal编程技术网

Java 插入在MySQL和JOOQ中使用一些默认值进行选择

Java 插入在MySQL和JOOQ中使用一些默认值进行选择,java,mysql,sql,jooq,Java,Mysql,Sql,Jooq,假设我有一个表Personid,fname,lname,它包含一个记录1,“Michael”,“Bay”。现在,我希望创建另一个具有相同fname和lname但id不同的个人记录表,即453456,“Michael”,“Bay”。这是我在纯SQL中的做法 插入Personid、fname、lname 选择453456,Person.fname,Person.lname 从个人 其中Person.id=1; 在保留JOOQ的代码生成和类型安全特性的同时,如何在理想情况下使用JOOQ做到这一点 我知

假设我有一个表Personid,fname,lname,它包含一个记录1,“Michael”,“Bay”。现在,我希望创建另一个具有相同fname和lname但id不同的个人记录表,即453456,“Michael”,“Bay”。这是我在纯SQL中的做法

插入Personid、fname、lname 选择453456,Person.fname,Person.lname 从个人 其中Person.id=1; 在保留JOOQ的代码生成和类型安全特性的同时,如何在理想情况下使用JOOQ做到这一点

我知道JOOQ提供了使用selectFrom语法将整个记录从一个表复制到同一个表或另一个表的能力

jooq.插入人 。选择SelectFromPerson.wherePERSON.ID.eq1 处决 但在我的例子中,记录中只有某些列需要复制,而其余的值需要显式设置

我能想到的另一个解决办法是

jooq.插入人 .价值452452 处决 jooq.updatePERSON .setrowPERSON.FNAME,PERSON.LNAME, 选择PERSON.FNAME,PERSON.LNAME .fromPERSON .wherePERSON.ID.eq1 .wherePERSON.ID.eq452452 处决 但这感觉不对。如果有人能为这个问题提供任何其他解决方案/解决方法,我将不胜感激。

jooq.insertIntoPERSON .columnsPERSON.ID,PERSON.FNAME,PERSON.LNAME 。选择Val452452,PERSON.FNAME,PERSON.LNAME .fromPERSON .wherePERSON.ID.eq1 处决 与往常一样,这是假设以下静态导入:

导入静态org.jooq.impl.DSL.*;
JOOQ没有提供一种实现原生普通SQL的方法吗。是的,我知道。我正在寻找一种使用代码生成并确保类型安全的解决方案。我已经相应地更新了我的问题。酷!。我完全不知道val函数。谢谢卢卡斯@rkudva:然而,您一直在幕后使用它,例如Field.eqT:-这里有更多信息:在我的应用程序中,java.util.UUID在MySQL中存储为二进制数据类型。二进制文件的默认JDBC数据类型是byte[]。所以我有一个自定义转换器在UUID和字节[]之间进行转换。在我发布的原始问题中,如果Person.id是BINARY类型,并且我随身携带一个常量UUID变量,那么如何将其与DSL.val函数一起使用?现在,它抛出以下异常数据截断:第1行“snapshot_id”列的数据太长;这个问题是否可能与@rkudva有关:你能问一个新问题吗?卢卡斯,我已经创建了一个解决方案并发布了我的解决方案。谢谢