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());
如果它们不是同一个字段,那就是你的问题。
在同一个 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());
如果它们不是同一个字段,那就是你的问题。