【发布时间】:2018-02-22 16:38:32
【问题描述】:
我有 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,则不会发生错误。
谁能告诉我我错过了什么?
【问题讨论】:
-
您是否有过时的 ormlite.txt 配置文件?
-
我不确定,但我从来没有配置过这样的文件
-
字段使用是否被标记为
@DatabaseField? ORMlite 特别不应该选择未标记的字段。这让我想知道是否需要重新编译或重新生成配置文件。 -
是的。我已经把 foreignAutoRefresh=true 放回去了,它现在可以工作了。可能是因为过去几天我已经多次清理和构建该项目。谢谢!