Android greenDAO更新和updateInTx不工作
我在我的一个项目中使用Greendao3.1。因为我需要我的id是Android greenDAO更新和updateInTx不工作,android,greendao,greendao3,Android,Greendao,Greendao3,我在我的一个项目中使用Greendao3.1。因为我需要我的id是UUID,所以我决定将它存储为ByteArray。现在的问题是,我无法使用update或updateInTx方法更新实体,我必须使用insertoreplace或insertoreplaceintx方法 有谁能告诉我发生了什么,为什么我不能使用update方法进行更新 使用insertOrReplace方法而不是update方法有什么缺点吗 这是我的实体的架构代码: Entity book = schema.addEntity("
UUID
,所以我决定将它存储为ByteArray
。现在的问题是,我无法使用update
或updateInTx
方法更新实体,我必须使用insertoreplace
或insertoreplaceintx
方法
有谁能告诉我发生了什么,为什么我不能使用update
方法进行更新
使用insertOrReplace
方法而不是update
方法有什么缺点吗
这是我的实体的架构代码:
Entity book = schema.addEntity("Book");
book.addByteArrayProperty("id").columnName("_id").primaryKey();
book.addStringProperty("title");
book.addByteProperty("edition");
book.addStringProperty("authors");
book.addStringProperty("desc");
book.addStringProperty("pic");
这是我的更新代码:
BookDao bookDao = daoSession.getBookDao();
List<Book> books = bookDao.loadAll();
for (Book book : books)
book.setDesc("It doesn't really matter!");
bookDao.updateInTx(books); //This isn't working
BookDao BookDao=daoSession.getBookDao();
List books=bookDao.loadAll();
用于(书籍:书籍)
setDesc(“这真的没关系!”);
bookDao.updateInTx(books)//这不管用
经过大量的搜索和麻烦,我找到了原因
由于无法查询BLOB
在sqlite
中键入,并且update
方法在WHERE
子句中使用了id
上的条件,因此update
方法将找不到我要查找的记录。另一方面,当我使用一种insertOrReplace
方法时,由于id
字段是唯一的,它不能将冗余的id
插入到表中,它会用我试图更新的记录完全替换旧记录。因此,update
方法没有问题,真正的问题是使用ByteArray
作为id
出于同样的原因,我在选择使用load
方法时也遇到了一个错误