Я использую Objectify и имею базовый объект, из которого все остальные сходят. Этот базовый объект имеет флаг с неизмененным обновлением, который устанавливается классами потомков при изменении значения свойства объекта, которое необходимо сохранить. Я делаю это, чтобы предотвратить ненужные записи в хранилище данных при синхронизации данных с клиентами.Objectify, аннотация @ignore и кеширование
Базовый объект выглядит следующим образом
@Cache
public abstract class WordBuzzEntity {
@Ignore
private boolean updated = false;
public boolean isUpdated() {
return updated;
}
public void setUpdated() {
updated = true;
}
public void save(boolean async) {
if (!updated)
return;
if (async)
ofy().save().entity(this);
else
ofy().save().entity(this).now();
}
}
я заметил при загрузке пользователей
User user = ofy().load().type(User.class).id(LoginTest.TEST_ID).now();
Это обновленный флаг иногда установлен в истинное значение в точке нагрузки.
Это из-за кеша сеанса Objectify или memcache? Не игнорируются ли свойства, кэшированные в этом случае, когда объект перезагружается?
Добавление строки для обновления обновлено до значения false в точке сохранения разрешает мою проблему, но я хотел бы понять, что происходит.
Нет ли обходного пути для этого? – Ajeet
@Ajeet Вам нужно будет написать что-то, чтобы очистить игнорируемые поля при загрузке элементов, чтобы убедиться, что они установлены в значения по умолчанию. –
Кажется хорошей альтернативой, но тогда мне нужно будет сделать дополнительную операцию записи. – Ajeet