当前位置: 首页 > 面试题库 >

jOOQ-多字段插入

商和雅
2023-03-14
问题内容

我想表达以下INSERT声明:

context.insertInto(TABLE A)
   .set(<FIELD A, FIELD B>, context.select(FIELD A, FIELD B).from(B).where(...))
   .set(... other field of table A ...)
   .set(... other field of table A ...)
   .set(... other field of table A ...)
   .returning()
   .fetch()

子选择返回一行,其中包含两列(FIELD AFIELD B),需要将其插入到target中TABLE A。这样做的原因是,<FIELD A, FIELD B>是的主键TABLE BTABLE A是指TABLE B(外键)。

这可能吗?


问题答案:

我不确定首先使用哪种SQL方言是否可能通过INSERT .. VALUES,但是您当然可以使用INSERT .. SELECT以下方式表达这种查询:

INSERT INTO a (a, b, x, y, z)
SELECT a, b, ... other value ..., ... other value ..., ... other value ...
FROM b
WHERE ...
RETURNING *;

或与jOOQ

context.insertInto(TABLE A, ... columns ...)
       .select(
           select(
               FIELD A, 
               FIELD B,
               ... other field of table A ...,
               ... other field of table A ...,
               ... other field of table A ...)
          .from(B)
          .where(...))
       )
       .returning()
       .fetch()


 类似资料:
  • 是否可以直接从POJO中使用Jooq将新记录插入到PostgreSQL数据库中?POJO扩展了一个具有id字段的通用标识类,而不在insert语句中包含id? 问题是,Jooq在insert语句中包含id,然后我当然得到一个null值约束。我不希望在它是新记录时插入它,但我希望在它返回记录时(插入后)、更新时以及select语句中包含它。 我不能简单地排除id,因为以后我需要它来轻松地绕过@one

  • 问题内容: 我想在一个表中插入多个字段时遇到问题。 这是我的表格: 这是提交代码: 该查询将插入数据库,但不会插入我输入的值。 有人可以帮帮我吗? 问题答案: 您正在对而不是在名称/年龄数组上进行foreach 。您应该像这样对名称或年龄数组进行foreach: 我还要指出,您当前容易受到SQL注入的影响,因此我添加了转义字符串以获取名称/年龄的步骤。 我也强烈建议您仅在数据库中进行一次批量插入,

  • 我试图在我的表中插入一条新记录 DSLContext类型中的方法newRecord(Table, Object)不适用于参数(String, ModelBook) 但是和这个一样:http://www.jooq.org/doc/2.5/manual/sql-execution/fetching/pojos/ 所以我不能做:

  • 我正在Spring 4应用程序中使用jOOQ 3.8.4和PostgreSQL 9.5。我有下表和类型定义 然后我尝试使用jOOQ插入,即: 然后我得到: 我做错了什么? 更新 我尝试按照Lukas的建议重命名shop.money类型(从到),但我相信问题与模式有关。请参阅更新的错误。 也许类型中的类型是一个问题!

  • 问题内容: 我正在将整个数据库访问层从Hibernate重写为JOOQ,并且遇到以下问题。 使用@Formula批注对JPA模型之一进行批注,如下所示: 在代码的后面,对数据库进行JPA查询,该数据库将 Fee5 与参数进行比较: 上面的查询如何转换为JOOQ DSL? 问题答案: 我设法通过以下JOOQ查询解决了该问题:

  • 有什么方法可以创建一个知道它们的名称的字段或表吗?理想情况下,我可以通过字段的名称和父表来指定字段,使用jOOQ为我构建“sometable”.“somefield”字符串。