私はAndroidとormLiteが初めてで、データを保存して、queryForIdを使用して再度取得しようとしています。最初はうまくいきましたが、少しいじった後、どういうわけか...クラスにidフィールドがないという例外が発生しました。
ここにクラスのコードがあります
@DatabaseTable(tableName="ForeignData")
public class ForeignData implements Serializable {
private static final long serialVersionUID = 3640428963380696279L;
@DatabaseFieldId(generatedId = true)
private Integer id;
@DatabaseFieldSimple(defaultValue = "")
private String name;
public ForeignData(){};
}
そして、これは私がそれを呼ぶ方法です...
ForeignData f = new ForeignData();
try {
Dao<ForeignData, Integer> fdao = new DatabaseHelper(getApplicationContext()).getForeignDao();
f.setName("test");
fdao.create(f);
f = fdao.queryForId(f.getId())==null?f:fdao.queryForId(f.getId());
txt1.setText(f.getName());
} catch (SQLException e) {
txt1.setText(e.getMessage());
}
そしてそれはで例外をキャッチします
f = fdao.queryForId(f.getId())==null?f:fdao.queryForId(f.getId());
ForeignData には id 列がないため、id をクエリできません。
そして、ForeignDataクラスのIDを次のように変更すると
@DatabaseField(generatedId=true,columnName="id")
private Integer id;
私が得る例外は、「データベースフィールドからのqueryForOne: SELECT * FROM 'ForeignData' WHERE 'id'=?」です。