我试图在我的接口方法中访问当前的 JDBI 事务handle
,这样做的目的是避免将handle
作为参数传递给接口的方法,从而使接口不受任何实现细节的影响。以下示例演示了预期的用例是什么。
我有一个UserApplicationService
管理正在使用的交易
class UserApplicationService(val jdbi: Jdbi, val userRepository: UserRepository) {
fun changeUserName() {
jdbi.useTransaction<Exception> {
userRepository.updateName("peter pan")
}
}
}
我有一个UserRepository
界面
interface UserRepository {
fun updateName(name: String)
}
我有一个PostgresUserRepository
接口的实现
class PostgresUserRepository: UserRepository {
override fun updateName(name: String) {
val handle: Handle = getHandle() // some method to get the handle of the transaction, this is what I need help solving
handle.execute("...") // set new name of user using the handle
}
}
任何有关如何解决此问题的建议将不胜感激。