gpt4 book ai didi

android - createOrUpdate() 总是使用 ORMLite 在数据库中创建一个新条目

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:23:11 26 4
gpt4 key购买 nike

在我的 Android 项目中,ORMLite 用作缓存。我正在从 Web 服务器下载数据并将其放入数据库中。我正在对我的对象调用 createOrUpdate,但重复项出现在数据库中。除了主键(它只是一个自动递增的整数)之外,数据库条目是相同的。我认为,因为我的第二个对象还没有主键,所以 ORMLite 认为这两个是不同的,即使其他所有字段都是相同的。

有谁知道这是不是真的?

最佳答案

除非您的对象已经设置了 id 字段,否则您不应调用 createOrUpdateORMLite 判断它是否存在于数据库中的方式是对其进行查询。代码做的是:

ID id = extractId(data);
// assume we need to create it if there is no id <<<<<<<<<<<<<<<<<<<<<<<
if (id == null || !idExists(id)) {
int numRows = create(data);
return new CreateOrUpdateStatus(true, false, numRows);
} else {
int numRows = update(data);
return new CreateOrUpdateStatus(false, true, numRows);
}

我将扩展 javadoc 以更好地解释这一点。他们在那里非常虚弱。对不起。我已将它们更新为:

This is a convenience method for creating an item in the database if it does not exist. The id is extracted from the data argument and a query-by-id is made on the database. If a row in the database with the same id exists then all of the columns in the database will be updated from the fields in the data parameter. If the id is null (or 0 or some other default value) or doesn't exist in the database then the object will be created in the database. This also means that your data item must have an id field defined.

关于android - createOrUpdate() 总是使用 ORMLite 在数据库中创建一个新条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10288297/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com