2017-10-25 14 views
0
나는 ID 필드가 Integer으로 다음 방법 선언이 모두 몇 가지 클래스가

:ORMLite ID 필드는 비교할 수없는

@Expose 
@DatabaseField(columnName = "_id", id = true) 
private Integer idField; 

모든 것이 컴파일하고 제대로 실행,하지만 나는 단순히 여부를 확인하려고 할 때를 기록은 존재합니다 것은 그쪽이

java.sql.SQLException: Field '_id' is of data type null which can not be compared 

입니다 :

Integer idField = 1; 
result = DBHelper.getHelper().getClassDAO().idExists(idField); 

나는 예외를 얻을 한 클래스 (그 이름을 A라고 부름)가 제대로 작동하지만 다른 클래스가 실패하고 모든 클래스가 동일한 방식으로 선언 된 ID 필드를 가지고 있기 때문에 원인을 알 수 없습니다. createOrUpdate 어떤 클래스의 객체라도 참조 클래스 A를 제외하면이 예외가 발생합니다.

도움의 손길을 주시면 감사하겠습니다.

참고. 프로젝트는 업데이트 된 ormlite_config.txt 파일을 사용합니다.

답변

0

몇 시간 동안 디버깅을 한 후에 언급 한 예외는 저장 될 클래스가 하나 더 많은 콜렉션을 가질 때만 나타납니다. 내가 아는 한, 예외는 Dao 클래스의 idExists 메서드 내에서 throw됩니다. createOrSave 메서드는 반드시 호출해야한다는 것을 염두에두면 두 경우 모두 SQLException이됩니다.

이제 해결 방법이 해결되었습니다. 오히려 idExists 메소드를 호출하는 것보다,이 같은 내 자신을 만들 수 있었다 :

return DBHelper.getHelper().getMyDAO().queryForId(idField) != null; 

을 대신 createOrUpdate 메소드를 호출하는 첫 번째 I는 기록이 존재하고, 그 결과에 따라, 나는 create를 호출하는 경우 확인 또는 update Dao 클래스의 메소드를 유지하고 싶습니다.