插入...使用output_expression返回
问题描述:
PostgresQL INSERTs允许使用插入列的任何子集返回output_expression
,但我无法获得与jOOQ一起使用此功能的语法。插入...使用output_expression返回
这是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准确地获取我想要的变量类型?
PD:我使用jOOQ 3.9.2
答
您可以使用.fetch().into(String.class)
+0
'fetch()。into()'返回'List
答
我已经找到解决方法如下,它利用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);
这是在路线图上:https://github.com/jOOQ/jOOQ/issues/3185 –