AndroidでOrmliteを使用していて、ObjectCacheを有効にすると、UpdateBuilderとColumnExpressionでテーブルを更新した後、古いデータが返されます。ドキュメントを読みましたが、キャッシュを有効にしてUpdateBuilderを使用しても警告は表示されません。
設定テーブルには、最大1〜5行である必要があります。updateColumnExpressionは、行の1つだけをtrueにする簡単な方法のようです。
これは予想される動作ですか?
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を無効にすると正しいデータが返されますが、このデータは非常に頻繁にフェッチされるため、保持したいと思います。
ありがとう