ORMLite 尝试在没有@DatabaseField 注释的情况下加载字段
ORMLite trying to load field without @DatabaseField annotation
我有 2 个 类 如下:
@Getter
@Setter
@NoArgsConstructor
@DatabaseTable(tableName = "condicao_ambiental")
public class CondicaoAmbiental {
@Expose
@DatabaseField(id = true, columnName = "id")
private UUID id;
@Expose
@DatabaseField(dataType = DataType.DATE_LONG)
private Date dataCriacao;
@Expose
@DatabaseField(columnName = "idUsuario", foreign = true, foreignAutoRefresh = true)
private Usuario usuario;
...
}
和
@Getter
@Setter
@NoArgsConstructor
@DatabaseTable(tableName = "usuario")
public class Usuario {
@Expose
@DatabaseField(id = true, columnName = "id")
private UUID id;
@DatabaseField(foreign = true, columnName = "idCliente")
private Cliente cliente;
@DatabaseField
private String nome;
@DatabaseField
private String login;
private String senha;
...
}
这些类中使用的注释来自Lombok
、Retrofit2
和OrmLite5
当我查询列表 CondicaoAmbiental
时出现此错误:
java.sql.SQLException: Unknown field 'senha' from the Android sqlite cursor, not in:[id, idCliente, nome, tipoSindicato, dataCadastro, diasTeste]
但列 senha
未被注释为字段。
当我查询列表 Usuario
时,一切运行正常,列表已加载。
如果我从字段 usuario
中删除 foreignAutoRefresh=true
,则不会发生错误。
有人能告诉我我错过了什么吗?
正如 Gray 所解释的那样,解决方案只是重新编译项目,以便 ORMLite 可以重新生成配置文件。
我有 2 个 类 如下:
@Getter
@Setter
@NoArgsConstructor
@DatabaseTable(tableName = "condicao_ambiental")
public class CondicaoAmbiental {
@Expose
@DatabaseField(id = true, columnName = "id")
private UUID id;
@Expose
@DatabaseField(dataType = DataType.DATE_LONG)
private Date dataCriacao;
@Expose
@DatabaseField(columnName = "idUsuario", foreign = true, foreignAutoRefresh = true)
private Usuario usuario;
...
}
和
@Getter
@Setter
@NoArgsConstructor
@DatabaseTable(tableName = "usuario")
public class Usuario {
@Expose
@DatabaseField(id = true, columnName = "id")
private UUID id;
@DatabaseField(foreign = true, columnName = "idCliente")
private Cliente cliente;
@DatabaseField
private String nome;
@DatabaseField
private String login;
private String senha;
...
}
这些类中使用的注释来自Lombok
、Retrofit2
和OrmLite5
当我查询列表 CondicaoAmbiental
时出现此错误:
java.sql.SQLException: Unknown field 'senha' from the Android sqlite cursor, not in:[id, idCliente, nome, tipoSindicato, dataCadastro, diasTeste]
但列 senha
未被注释为字段。
当我查询列表 Usuario
时,一切运行正常,列表已加载。
如果我从字段 usuario
中删除 foreignAutoRefresh=true
,则不会发生错误。
有人能告诉我我错过了什么吗?
正如 Gray 所解释的那样,解决方案只是重新编译项目,以便 ORMLite 可以重新生成配置文件。