2017-10-25 7 views
0

を比較することはできません私はIDフィールドはIntegerとして次の方法で宣言したすべてがいくつかのクラス、持っている:ORMLite IDフィールドは

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

すべてがコンパイルされ、正常に動作しますが、私は単にかどうかを確認しようとしたときにレコードが存在します。

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

私は例外を取得:

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

事はTHAであります1つのクラス(それをAと名づけましょう)では、メソッドは正常に動作しますが、他のクラスは失敗し、すべてのクラスが同じ方法で宣言されたIDフィールドを持つため、原因がわかりません。 createOrUpdateクラスのオブジェクトを参照しようとすると、例外が発生します。

喜んでいただければ幸いです。

注。プロジェクトはormlite_config.txtファイルを使用して更新されます。

答えて

0

数時間のデバッグ後、私は、上記の例外は、保存するクラスに1つ以上のコレクションがある場合にのみ発生することに気付きました。私が知る限り、例外はDaoクラスのidExistsメソッド内にスローされます。 createOrSaveメソッドは必ず呼び出さなければならないことを覚えておいてください。そのため、私はSQLExceptionを両方のケースで取得しています。

これを解決するための回避策です。レコードが存在する場合、最初に私がチェックし、結果に応じて、私はcreateを呼び出し、

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

、代わりにcreateOrUpdateメソッドを呼び出す:むしろidExistsメソッドを呼び出すよりも、私はこのように自分自身を作成する必要がありましたまたは私が保持したいDAOクラスのupdateメソッド。

関連する問題