Je utilise Ormlite sur Android et avec le cache d'objets activé, je reçois des données obsolètes après la mise à jour de la table avec un UpdateBuilder et une ColumnExpression. J'ai lu la documentation et cela ne met pas en garde contre l'utilisation de l'UpdateBuilder avec le cache activé.
La table des paramètres devrait avoir au maximum 1 à 5 lignes. La mise à jour de la ColumnExpression semble être un moyen facile de permettre à une seule des lignes d'être vraie.
Est-ce le comportement attendu ?
public void setActiveSetting(String id)
{
try {
UpdateBuilder updateBuilder2 = getHelper().getSettingsDao().updateBuilder();
updateBuilder2.updateColumnExpression("actif", "id = " + id );
updateBuilder2.update();
} catch (SQLException e){
e.printStackTrace();
}
}
Et ceci est l'appel qui renvoie les données obsolètes :
public List getSettings()
{
List settings = null;
try {
settings = getHelper().getSettingsDao().queryForAll();
} catch (SQLException e) {
e.printStackTrace();
}
return settings;
}
Et le DAO des paramètres :
public Dao getSettingsDao()
{
if (null == settingsDao) {
try {
settingsDao = getDao(Settings.class);
settingsDao.setObjectCache(true);
} catch (java.sql.SQLException e) {
e.printStackTrace();
}
}
return settingsDao;
}
Désactiver le cache d'objets renvoie les données correctes, mais ces données sont récupérées assez fréquemment, donc j'aimerais le conserver.
Merci