Room和Kotlin - 获取"查询中的每个绑定变量必须具有匹配的方法参数。"

时间:2017-06-21 14:11:17

标签: android kotlin android-room

我收到此错误:

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)
}

但我正在传递并使用此参数。任何人都可以看到问题是什么,或者可以指出我使用Room with Kotlin的工作示例?

2 个答案:

答案 0 :(得分:3)

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

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

在较新版本的kotlin和room中,这个问题已得到解决!

答案 1 :(得分:1)

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

...

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

...

android {
...
}

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