使用GreenDao,我以某种方式设法将我的数据库置于一个没有密钥的实体的状态。
我的问题是如何清除/删除此实体?我没有在AbstractDao中看到一个允许我删除另一个列名的函数。
答案 0 :(得分:0)
您可以编写原始SQL查询来删除该行,并使用您可以从可读DaoSession中获取的SQLiteDatabase执行该行。
DELETE FROM YourTable WHERE someColumn=?
如果你想避免拼写错误,可以使用greendao的表格信息:
String query = "DELETE FROM " + YourDao.TABLENAME +
" WHERE " + YourDao.Properties.SomeColumn.columnName + "=?";
有关详情:
根据您创建架构的方式,存在一些缺陷:
如果您使用AUTOINCREMENT
和NOT NULL
创建了主键,则greendao将无法正确插入主键!
在分配自动增量主键的情况下,主键始终为0
,导致在第二行插入表格时出现禁令违规行为。
因此,如果您不想处理greendao-sourcecode,则不应使用notNull().primaryKey().autoincrement()
。
我已经对greendao-core做了一些小改动,以便能够使用上层语句,但是如果只使用primaryKey().autoincrement()
,一切都应该运行良好。
答案 1 :(得分:0)
主键本身是唯一的而不是null,即使我明确提到它(不是null()。primaryKey()),它应该完美无缺。我想指出,我是做错了还是greenDA出了问题。 是否有任何来自greenDAO的消息来解决即将发布的版本中的问题。
我没有太多的声誉,否则我会在评论中提出这个问题。