0

我试图在我的接口方法中访问当前的 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
    }
}

任何有关如何解决此问题的建议将不胜感激。

4

0 回答 0