gpt4 book ai didi

java - ORMLite createOrUpdate() 记录同时保留特定列?

转载 作者:行者123 更新时间:2023-11-30 03:28:43 25 4
gpt4 key购买 nike

我正在使用 ORMLite 来管理包含数据收集应用程序查找值列表的数据库表。这些查找值会定期从远程服务器更新。但是,我希望能够在创建或更新记录时将数据保留在特定列中,因为我想存储与每个查找值关联的使用计数(特定于设备)。以下是我更新记录的方式:

        //build list of new records
final List<BaseLookup> rows = new ArrayList<BaseLookup>();
for (int i = 0; i < jsonRows.length(); i++) {
JSONObject jsonRow = jsonRows.getJSONObject(i);

//parse jsonRow into a new BaseLookup object and add to rows
...
}

//add the new records
dao.callBatchTasks(new Callable<Void>() {
public Void call() throws Exception {
for (BaseLookup row : rows) {
//this is where I'd like to preserve the existing
//value (if any) of the "usageCount" column

Dao.CreateOrUpdateStatus result = dao.createOrUpdate(row);
}
return null;
}
});

我考虑过尝试在循环中单独获取和合并每条记录,但这似乎表现不佳(有些表有几千条记录)。是否有更简单或更集成的方法来实现这一目标?

最佳答案

I'd like to be able to preserve the data in a specific column while creating or updating the records, since I would like to store usage counts (specific to the device) associated with each lookup value

如果您必须从 JSON 数据更新某些列,但又想将 usageCount 设置为 usageCount + 1,那么您有几个选择。

  • 您可以使用 dao.updateBuilder(); 方法和 UpdateBuilder 类构建更新语句,然后将列更新为它们的新值和 usageCount 到 ID 匹配的 usageCount + 1。您应该观察返回值以确保更新了一行。如果没有,则创建对象。

  • 但是,这样做会更容易:

    1. 从数据库中获取BaseLookup
    2. 如果为 null,调用 dao.create() 持久化一个新条目
    3. 否则更新列并增加 usageCount
    4. 并使用 dao.update(...)
    5. 将其保存回来

关于java - ORMLite createOrUpdate() 记录同时保留特定列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17815990/

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