在同一个Activity中,我删除了书签对象,然后我尝试从数据库中查询它,它仍然存在?这是我删除和查询的代码:
public void removeBookmark(Bookmark bookmark) {
try {
getHelper().getBookmarkDao().deleteById(bookmark.getId());
getHelper().getBookmarkDao().clearObjectCache();
// DeleteBuilder<Bookmark, String> deleteBuilder = getHelper().getBookmarkDao().deleteBuilder();
// deleteBuilder.where().eq("id", bookmark.getId());
// PreparedDelete<Bookmark> preparedQuery = deleteBuilder.prepare();
// getHelper().getBookmarkDao().delete(preparedQuery);
List<Bookmark> lst = listBookmarks(bookmark.getIsbn());
LOGD(TAG, "removeBookmark count: " + lst.size());
} catch (Exception e) {
e.printStackTrace();
}
}
public List<Bookmark> listBookmarks(String id) {
List<Bookmark> bookmarks = new ArrayList<Bookmark>();
try {
QueryBuilder<Bookmark, String> queryBuilder = getHelper().getBookmarkDao().queryBuilder();
queryBuilder.where().eq("id", id);
PreparedQuery<Bookmark> preparedQuery = queryBuilder.prepare();
bookmarks = getHelper().getBookmarkDao().query(preparedQuery);
} catch (Exception e) {
e.printStackTrace();
}
return bookmarks;
}
我也clearObjectCache
但没有任何事情发生。
这是我的ORMLite的版本:compile 'com.j256.ormlite:ormlite-android:4.48'
答案 0 :(得分:0)
我不确定您使用的是ORMLite还是GreenDAO。它们是分开的东西。
我认为您遇到问题,因为您正在使用bookmark
ID进行删除:
getHelper().getBookmarkDao().deleteById(bookmark.getId());
然后列出isbn的书签:
List<Bookmark> lst = listBookmarks(bookmark.getIsbn());
如果他们不是同一个领域,那就是你的问题。