Java r2dbc客户端执行sql,并在下次执行时使用返回的id



我使用带有postgresql的r2dbc客户端,我想在一个事务中调用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<插入的上一个ID>

在第一条语句中,添加一个额外的过滤器来返回id字段。

.filter((statement, executeFunction) -> statement.returnGeneratedValues("id").execute())

查看我的保存和查询示例。

还有一个JUnit测试用例,用于演示将它们连接在一起。

BTW:我在Spring5.3中使用DatabaseClient来处理这些示例。

最新更新