2017-09-13 21 views
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, Retrofit2OrmLite5

에서

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을 제거하면 오류가 발생하지 않습니다.

누군가 내가 누락 된 부분을 말해 줄 수 있습니까?

+0

오래된 ormlite.txt 설정 파일이있을 수 있습니다. – Gray

+0

잘 모르겠다. 그런 파일을 결코 설정하지 않았다. –

+1

_used_ 필드가'@ DatabaseField'로 표시 되었습니까? ORMlite는 특히 레이블이없는 필드를 선택하지 않아야합니다. 뭔가 재 컴파일하거나 설정 파일을 다시 생성해야하는지 궁금합니다. – Gray

답변

1

Gray에서 설명한 것처럼 솔루션은 프로젝트를 다시 컴파일하므로 ORMLite는 구성 파일을 다시 생성 할 수 있습니다.