Java r2dbc客户机执行sql并为下一次执行使用返回的id
我将r2dbc客户端与postgresql一起使用,我希望在一个事务中调用2个插入(使用第一个查询的id),如:Java r2dbc客户机执行sql并为下一次执行使用返回的id,java,spring,reactive-programming,r2dbc,Java,Spring,Reactive Programming,R2dbc,我将r2dbc客户端与postgresql一起使用,我希望在一个事务中调用2个插入(使用第一个查询的id),如: client.execute(“插入到位(id,city)值(:id,:city)”) .bind(“id”,“nextval('place\u id\u seq')) .bind(“城市”,place.getCity()) .fetch().rowsUpdated()) ) .then(client.execute(“INSERT-in-place\u category value
client.execute(“插入到位(id,city)值(:id,:city)”)
.bind(“id”,“nextval('place\u id\u seq'))
.bind(“城市”,place.getCity())
.fetch().rowsUpdated())
)
.then(client.execute(“INSERT-in-place\u category value(:place\u id,:category\u id);”)
.bind(“place_id”,)
.bind(“category_id”,place.getCategoryId())
.fetch().rowsUpdated())
.然后();
我不知道如何获取@Id of first insert在第一条语句中,添加一个额外的过滤器以返回Id字段
.filter((语句,executeFunction)->语句.returnGeneratedValues(“id”).execute())
检查我的和示例
还有一个将它们连接在一起的演示
顺便说一句:我在Spring5.3中使用DatabaseClient来处理这些示例
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();