我在 Android 上使用 Ormlite 并启用了 ObjectCache,在使用 UpdateBuilder 和 ColumnExpression 更新表后,我得到了旧数据。我已经通读了文档,它没有警告不要在启用缓存的情况下使用 UpdateBuilder。
设置表最多应该只有 1-5 行。updateColumnExpression 似乎是一种只允许其中一行为真的简单方法。
这是预期的行为吗?
public void setActiveSetting(String id)
{
try {
UpdateBuilder<Settings, Integer> updateBuilder2 = getHelper().getSettingsDao().updateBuilder();
updateBuilder2.updateColumnExpression("active", "id = " + id );
updateBuilder2.update();
} catch (SQLException e){
e.printStackTrace();
}
}
这是返回过时数据的调用:
public List<Settings> getSettings()
{
List<Settings> settings = null;
try {
settings = getHelper().getSettingsDao().queryForAll();
} catch (SQLException e) {
e.printStackTrace();
}
return settings;
}
以及设置DAO:
public Dao<Settings, Integer> getSettingsDao()
{
if (null == settingsDao) {
try {
settingsDao = getDao(Settings.class);
settingsDao.setObjectCache(true);
} catch (java.sql.SQLException e) {
e.printStackTrace();
}
}
return settingsDao;
}
禁用 ObjectCache 确实会返回正确的数据,但是这些数据被非常频繁地获取,所以我想保留它。
谢谢