如何解决Java r2dbc客户端执行sql并使用返回的ID进行下一次执行
我将r2dbc客户端与PostgreSQL一起使用,我想在一个事务中调用2次插入(使用第一个查询的ID),例如:
client.execute("INSERT INTO place(id,city) VALUES(:id,:city)")
.bind("id","nextval('place_id_seq')")
.bind("city",place.getCity())
.fetch().rowsUpdated())
)
.then(client.execute("INSERT INTO place_category VALUES (:place_id,:category_id);")
.bind("place_id",<PREVIOUS_ID OF INSERT>)
.bind("category_id",place.getCategoryId())
.fetch().rowsUpdated())
.then();
我不知道如何获取第一次插入
解决方法
在第一条语句中,添加一个额外的过滤器以返回id字段。
.filter((statement,executeFunction) -> statement.returnGeneratedValues("id").execute())
还有一个JUnit test case用于演示如何将它们连接在一起。
顺便说一句:我在Spring 5.3中为这些示例使用了DatabaseClient。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。