Android ORMLite无法删除对象

时间:2016-01-25 12:27:33

标签: java android ormlite

在同一个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'

1 个答案:

答案 0 :(得分:0)

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

我认为您遇到问题,因为您正在使用bookmark ID进行删除:

getHelper().getBookmarkDao().deleteById(bookmark.getId());

然后列出isbn的书签:

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

如果他们不是同一个领域,那就是你的问题。