如果我有一个类/实体:
@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的参数。有什么办法可以绕过这件事吗?
1条答案
按热度按时间ie3xauqp1#
如果没有
@ColumnInfo(name = "ageInYears")
注解,则可能会将其Map为age_in_years
。该
@Entity
注解也缺少参数;例如。@Entity(tableName = "persons")
。如果不提供注解,则始终是大小写为烤肉串的类或成员名称。
在编辑
@Dao
时,代码自动完成也知道列名。而是文档的这一部分:https://developer.android.com/training/data-storage/room/defining-data