Java r2dbc 客户端执行 sql 并使用返回的 id 进行下一次执行
Java r2dbc client execute sql and use returned id for next execute
我将 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
在第一个语句中,向 return id 字段添加一个额外的过滤器。
.filter((statement, executeFunction) -> statement.returnGeneratedValues("id").execute())
并且有一个 JUnit test case 用于将它们连接在一起的演示。
顺便说一句:我在 Spring 5.3 中使用 DatabaseClient 来处理这些示例。
我将 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
在第一个语句中,向 return id 字段添加一个额外的过滤器。
.filter((statement, executeFunction) -> statement.returnGeneratedValues("id").execute())
并且有一个 JUnit test case 用于将它们连接在一起的演示。
顺便说一句:我在 Spring 5.3 中使用 DatabaseClient 来处理这些示例。