【发布时间】:2020-02-15 14:39:27
【问题描述】:
我在带有 Kotlin 的 Spring Webflux 项目中使用 R2bc。它运行良好。但是我有这个方法
@Component
class UserRepository(private val client: DatabaseClient, private val operator: TransactionalOperator) {
suspend fun updateUser(user: User, value: String): Int {
client.execute("INSERT INTO log(user_id, activity) VALUES (:user_id, :activity)")
.bind("activity", user.activity)
.bind("user_id", user.id)
.fetch()
.awaitRowsUpdated()
return client.execute("UPDATE users SET value = :value WHERE id = :id")
.bind("value", value)
.bind("id", user.id)
.fetch()
.awaitRowsUpdated()
}
此方法有效,但我想使用 DB 事务。 Kotlin 是否支持它。
【问题讨论】:
-
你为什么使用数据库客户端而不是 spring-data 存储库?
-
因为我需要用一种方法管理多个实体。这是一个非常简化的版本,涉及的内容很少。但我们确实在最简单的用例中使用 R2BC 存储库。
-
因为这个 awaitRowsUpdated 被阻塞了
-
即使您从挂起的方法调用。我不这么认为,你能给我举个例子吗?
标签: kotlin reactive-programming spring-webflux reactive kotlin-coroutines