Android ORMLite 无法删除对象

Android ORMLite cannot delete object

在同一个 Activity 中,我删除了 Bookmark 对象,然后我尝试从数据库中查询它,它仍然存在吗?这是我要删除和查询的代码:

    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'

我不确定您使用的是 ORMLite 还是 GreenDAO。它们是不同的东西。

我认为您遇到了问题,因为您正在使用 bookmark id:

进行删除
getHelper().getBookmarkDao().deleteById(bookmark.getId());

然后按 isbn 列出书签:

List<Bookmark> lst = listBookmarks(bookmark.getIsbn());

如果它们不是同一个字段,那就是你的问题。