我正在尝试将ormdroid作为 Android 的 ORM 工具。我有一个我想要保留的收藏夹类的对象列表,我时不时地使用 ormdroid 将这些对象的列表保存到磁盘。
当然,用户从列表中删除的那些收藏夹也应该从磁盘中删除,所以我想首先从磁盘中删除所有收藏夹,然后再次保存列表:
List<Favorite> oldFavs = Entity.query(
Favorite.class).executeMulti();
for (Favorite f : oldFavs) {
f.delete();
Log.d("ORM", "Deleting: " + f.getTitle());
}
然后再次保存我的收藏夹:
for (Favorite f : myFavorites) {
f.save();
Log.d("ORM", "Saving: " + f.getTitle());
}
通过在我的代码中放入大量 Log.d() 我发现了以下内容:
从磁盘中删除所有收藏夹后,使用 ormdroid 的查询确实返回了一个大小为 0 的列表。但是当我再次保存我的收藏夹时,其中一些(旧记录中已经存在的那些)被更新,而不是新创建的f.save() 方法,但仍不可用于查询。
有没有人积极使用 ormlite 可以在这里帮助我,或者有人可以验证 ormlite 的 delete() 方法中的代码实际上并且肯定会从数据库中删除这条记录:
public void delete() {
if (!mTransient) {
SQLiteDatabase db = ORMDroidApplication.getDefaultDatabase();
db.beginTransaction();
try {
delete(db);
db.setTransactionSuccessful();
} finally {
db.endTransaction();
}
db.close();
}
}