Мой конкретный вопрос (все остальное - просто контекст, и его можно игнорировать, если вы знаете ответ на мой вопрос): Как определить, является ли объект временным или нет, используя JDO (или как написать короткийметод, который это делает)?
Контекст для тех, кому любопытно или не понятно, почему я хотел бы этого:
Я работаю с JDO над GAE / J иВ настоящее время я реализую использование движка приложения memcache api.Я столкнулся с проблемой, когда я кэширую экземпляр сущности из моего хранилища данных.В конце запроса мой диспетчер постоянства закрывается и - насколько я могу судить, кэшированный объект становится временным (я могу ошибаться в этом) и зависает в кэше.
В будущемкэшированный объект используется для построения моего представления и т. д., но когда я иду, чтобы обновить объект и попытаться сохранить его;объект не сохраняется (и это справедливо).Я работаю над этим, пытаясь повторно извлечь кэшированный объект перед выполнением операций обновления.Но это создает еще одну проблему, потому что теперь, когда я обновляю объект, который случайно не кэшируется, он управляется моим диспетчером сохраняемости, и все выполняемые мной операции обновления перезаписываются при получении свежего объекта.По сути, я делаю это ...
// valueWithChangesToUpdate is an object that could be from
// memcache or could be fresh from pm, don't know for sure
// going into the method
public <T extends SomeKindOfEntity> void update(CustomQueryClass q, T valueWithChangesToUpdate) {
// If valueWithChangesToUpdate is not from memcache/not transient then
// any changes made are overridden when the following statement executes
T freshObject = q.runQuery();
// What I would like to do to avoid problem I'm having...
// T freshObject = null;
// if(valueWithChangesToUpdate.isTransient()) {
// freshObject = q.runQuery();
// }
// End goal...
freshObject.applyUpdates(valueWithChangesToUpdate);
PMF.getCurrentPM().makepersistent(freshObject);
}
Если есть какой-то другой способ, которым я должен пытаться сделать это, или если я думаю об этом неправильно, пожалуйста, не стесняйтесь указывать на это.