1
나는 다음과 같이 2 종류가 있습니다는 ORMLite는 @DatabaseField 주석없이 필드를로드 할
@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 설정 파일이있을 수 있습니다. – Gray
잘 모르겠다. 그런 파일을 결코 설정하지 않았다. –
_used_ 필드가'@ DatabaseField'로 표시 되었습니까? ORMlite는 특히 레이블이없는 필드를 선택하지 않아야합니다. 뭔가 재 컴파일하거나 설정 파일을 다시 생성해야하는지 궁금합니다. – Gray