PostgresQL INSERTs允许使用插入列的任何子集返回output_expression
,但我无法使用jOOQ使用此功能的语法正确。
这是PL / pgSQL等同于我想要实现的目标:
CREATE TABLE my_table (i INTEGER, t TEXT);
DO
$$DECLARE my_var TEXT;
BEGIN
INSERT INTO my_table(i, t)
VALUES(1, 'hello')
RETURNING (t) INTO my_var;
RAISE NOTICE 'Inserted text was --> % <--', my_var;
END$$;
但我发现问题是这个语法在jOOQ中无效:
String retVal = using(configuration)
.insertInto(MY_TABLE,
MY_TABLE.I,
MY_TABLE.T)
.values(i, t)
.returning(MY_TABLE.T)
.fetchInto(String.class);
我最接近的是使用fetchOne
获取完整MyTableRecord
并选择我想要的字段。还有另一种方法告诉jOOQ准确地获取我想要的变量类型吗?
P.D。:我正在使用jOOQ 3.9.2
答案 0 :(得分:0)
您可以使用content
答案 1 :(得分:0)
我找到的解决方法如下,它利用了Java的Optional:
String retVal = using(configuration)
.insertInto(MY_TABLE,
MY_TABLE.I,
MY_TABLE.T)
.values(i, t)
.returning()
.fetchOptional()
.map(MyTableRecord::getT)
.orElse(null);