gpt4 book ai didi

Android 房间数据库错误 : Unused parameter: days in @Query function

转载 作者:太空宇宙 更新时间:2023-11-03 11:41:53 25 4
gpt4 key购买 nike

我正在使用 Room 数据库,试图在我的 Dao 中编写一个查询,这将删除所有超过特定天数的记录。这是我的结论:

 @Query("DELETE FROM my_table WHERE dateFrom <= date('now','-:days day')")
fun deleteAllOlderThan(days: Int)

但是,当我尝试构建我的项目时,我的 Gradle 控制台出现错误:

error: Unused parameter: days

我使用的是 Kotlin,所以它也向我展示了这个:

Error:Execution failed for task ':nexo:kaptDebugKotlin'. Internal compiler error. See log for more details

我的查询有什么问题?

更新

我也收到有关转换日期的错误。这是我的转换器:

class Converter {
@TypeConverter
fun fromTimestamp(value: Long?) = value?.let { Date(it) }

@TypeConverter
fun dateToTimestamp(date: Date?) = date?.time
}

我还通过注释将它添加到我的数据库中:

@TypeConverters(Converter::class)

这是我得到的具体错误:

Cannot figure out how to save this field into database. You can consider adding a type converter for it. e: e:private final java.util.Date dateFrom = null;

总结

  1. 我试图将 Converter 与密封类一起使用,这在 Room 中会导致问题,因此我决定将我的日期参数保留为 Long。

  2. 检查 Emmanuel S 的回答。应该是:

    @Query("DELETE FROM my_table WHERE dateFrom <= date('now', '-' || :days || ' days')")
    fun deleteAllOlderThan(days: Int)

最佳答案

我认为 CW 已经为您的:days 问题给出了答案。

你的日子必须像字符串一样被引用

"-20 days"


@Query("DELETE FROM my_table WHERE dateFrom <= date('now', :days)")
fun deleteAllOlderThan(days: String)

如果它不起作用,concat 可能会有所帮助。

尝试:

@Query("DELETE FROM my_table WHERE dateFrom <= date('now', '-' || :days || ' days')")
fun deleteAllOlderThan(days: Int)

对于您的转换器问题,您可能需要使用

@TypeConverter
fun fromTimestamp(value: Long?) = value?.let { Date(it) }

@TypeConverter
fun dateToTimestamp(date: Date?) = date?.time

效果很好。

不要使用伴生对象。只需使用

class DBConverters { 
@TypeConverter
fun fromTimestamp(value: Long?) = value?.let { Date(it) }

@TypeConverter
fun dateToTimestamp(date: Date?) = date?.time
}

并将转换器添加到您的抽象数据库类中

@TypeConverters(DBConverters::class)
abstract class YourDb : RoomDatabase() {}

关于Android 房间数据库错误 : Unused parameter: days in @Query function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46747457/

25 4 0