JDO getKey иногда возвращает ноль после недавно сохраненного объекта - PullRequest
0 голосов
/ 05 марта 2011

У меня тот же вопрос, который никогда не был решен по ссылке ниже.Кто-нибудь решил это?

Datanucleus JDO Извлечь недавно сгенерированный первичный ключ

Используя JDO + GAE, после вызова makePersistent иногда Object.getKey () возвращает объект Key ииногда возвращает ноль.

Я использую транзакцию.Я попытался отсоединить копию, сделать объект временным, установить defaultFetchGroup = true в поле Key, и я все еще не могу получить согласованные результаты, когда поле Key всегда заполнено.

В документации указан ключполе будет доступно после вызова makePersistent, но иногда это только так.

Спасибо.

1 Ответ

1 голос
/ 05 марта 2011

Если используется внутри txn: с пессимистическим txn любые сгенерированные поля должны быть заполнены, а с оптимистичным txn они не будут заполняться, пока вы не вызовете pm.flush (). По крайней мере, это спецификация JDO. Если используется вне txn, то вам придется подождать, пока makePersistent () не сбросится (чего не будет до следующего txn).

...