我使用ORMLite for Android将数据存储在SQLite数据库中。
在某些情况下,我从WebService收到不完整的信息,因此我的一些对象值为null。然后,ORMLite尝试将新对象(带有空值)存储到SQLite数据库中。
我想要实现的是,如果本地数据库已经有了值,ORMLite将跳过存储具有空值的属性。
例如:我有一个带有名字和姓氏的本地Person对象。当我收到来自WebService的新数据时,它只包含名字(这意味着姓氏== null)而我调用personDAO.udpate(receivedPersonObject)
,数据库中的姓氏将被覆盖为空。
使用update()
方法时,有没有办法阻止ORMLite将空值写入数据库?
答案 0 :(得分:4)
使用update()方法时,有没有办法阻止ORMLite将空值写入数据库?
没有。您可以使用canBeNull = false
标记该字段,但如果尝试使用null
进行更新,则会抛出异常。我认为您必须检查值以查看是否存在空值或使用UpdateBuilder
并仅更新您需要更新的特定字段。
UpdateBuilder<Foo,Integer> updateBuilder = new UpdateBuilder<Foo,Integer>();
updateBuilder.where().eq(Foo.ID_FIELD, foo.getId());
if (foo.getFirstName() != null) {
updateBuilder.where().eq(Foo.FIRST_NAME_FIELD, foo.getFirstName());
}
if (foo.getLastName() != null) {
updateBuilder.where().eq(Foo.LAST_NAME_FIELD, foo.getLastName());
}
...
updateBuilder.update();
答案 1 :(得分:1)
另一种可以解决这个问题的方法是:
希望这有帮助。
答案 2 :(得分:0)
在调用update()
方法