0

我收到此错误:

error: Each bind variable in the query must have a matching method parameter. Cannot find method parameters for :network.
error: Unused parameter: arg0

当像这样尝试 Room 和 Kotlin 时:

@Dao
interface TokenDefinitionDao {

    @Query("SELECT * FROM token_descriptors WHERE network LIKE :network")
    fun getAllForNetwork(network: String?): List<TokenDescriptor>

    @Delete
    fun delete(token: TokenDescriptor)
}

但我正在传递和使用这个参数。任何人都知道问题是什么,或者可以指出我在 Kotlin 中使用 Room 的工作示例?

4

2 回答 2

4

尝试将“network”参数更改为“arg0”

@Query("SELECT * FROM token_descriptors WHERE network LIKE :arg0")

在较新版本的 kotlin 和 room 中,此问题已修复!

于 2017-11-07T18:20:14.793 回答
3

为了避免这个问题,你必须在 build.gradle 中使用 kotlin-kapt 插件。

...

apply plugin: 'kotlin-android'
apply plugin: 'kotlin-kapt'

...

android {
...
}

顺便说一句,确保您使用的是 kotlin 1.2.0+

于 2017-06-21T19:15:40.523 回答