我想表达以下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 A
和FIELD B
),需要将其插入到target中TABLE A
。这样做的原因是,<FIELD A, FIELD B>
是的主键TABLE B
。TABLE 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”字符串。