[英]error: Cannot find getter for field in Android Room
这是android studio中的一个简单的类:
package com.loghty.bahaa.loghty;
import android.arch.persistence.room.ColumnInfo;
import android.arch.persistence.room.Entity;
import android.arch.persistence.room.PrimaryKey;
import android.support.annotation.NonNull;
@Entity (tableName = "Chars")
public class Chars {
@PrimaryKey(autoGenerate = true)
@ColumnInfo(name = "char_Id")
private int pCId;
@NonNull
@ColumnInfo(name = "char_field")
private String mcharField;
// Getters and setters
public String getMcharField() {
return mcharField;
}
public void setMcharField(@NonNull String mcharField) {
this.mcharField = mcharField;
}
public int getpCId() {
return pCId;
}
}
但是当我构建应用程序时,我在 pCId 字段中收到此错误:
错误:找不到字段的吸气剂
我多次检查代码,但没有什么奇怪的。 错误究竟在哪里?
将变量从私有更改为受保护或公共
来自private int pCId;
protected int pCId;
这对我有用:
在第一次在设备上安装之前清理所有数据,因为我不想进行迁移。
@Entity(tableName = "words") public class Word { @PrimaryKey(autoGenerate = true) private int id; @NonNull @ColumnInfo(name = "word") private String mWord; public Word(int id, @NonNull String mWord) { this.id = id; this.mWord = mWord; } @Ignore public Word(@NonNull String mWord) { this.mWord = mWord; } public int getId() { return id; } public String getWord(){ return this.mWord; } }
当 getter fun 返回类型与字段类型( DateTime
与String
)不同时,我遇到了同样的问题:
val timestamp: String = DateTime.now().toString()
fun getTimestamp(): DateTime = DateTime.parse(timestamp)
Room 正在跳过timestamp
字段的一代getTimestamp()
乐趣,因为 Room 认为它已经创建。 其中,类型不匹配导致异常,因为类型不匹配。
解决方案是重命名 getter fun :
val timestamp: String = DateTime.now().toString()
fun getTime(): DateTime = DateTime.parse(timestamp)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.