sqlite 在创建SELECT查询时,Room无法识别某些类参数

km0tfn4u  于 2022-11-15  发布在  SQLite
关注(0)|答案(1)|浏览(172)

如果我有一个类/实体:

@Entity
class Person(yearOfBirth: Int) {
  val ageInYears: Int
    get() = currentYear - yearOfBirth
}

并且想要创建一个DAO:

@Dao
interface PersonDao {
  @Query("SELECT * FROM person WHERE ageInYears >= 21")
  fun getAdults(): List<Person>
}

我在IDE中遇到一个问题,说“无法解析符号‘ageInYears’”。Room似乎不能处理带有getter的参数。有什么办法可以绕过这件事吗?

ie3xauqp

ie3xauqp1#

如果没有@ColumnInfo(name = "ageInYears")注解,则可能会将其Map为age_in_years
@Entity注解也缺少参数;例如。@Entity(tableName = "persons")
如果不提供注解,则始终是大小写为烤肉串的类或成员名称。
在编辑@Dao时,代码自动完成也知道列名。而是文档的这一部分:https://developer.android.com/training/data-storage/room/defining-data

相关问题