Я создал небольшой проект, используя apache.JDO / w DataNucleus.Я могу сохранить данные без каких-либо проблем, но я застрял при попытке обновить или удалить их.
Сценарий следующий:
- Я создаю объект и сохраняю его, он получает и id
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Long id;
Я закрываю PersistenceManager В приложении я изменяю свой объект (Transient) Я пытаюсь снова сохраниться (поле id тоже самое), но вместо обновления это приводит ксоздание нового объекта
В Google App Engine тот же сценарий дал мне обновление (ожидаемые результаты - см. ниже).
Я также дам вам небольшой пример кода, чтобы проиллюстрировать мою проблему:
PersistenceManager pm = PMF.getPM();
Option dao = new Option(String.class, "field", "A");
pm.makePersistent(dao);
pm.close();
System.out.println("1");
for (Object o : Model.findAll(Option.class))
System.out.println(((Option) o).getValue());
dao.setValue("B");
pm = PMF.getPM();
pm.makePersistent(dao);
pm.close();
System.out.println("2");
for (Object o : Model.findAll(Option.class))
System.out.println(((Option) o).getValue());
pm = PMF.getPM();
pm.makePersistent(dao);
pm.deletePersistent(dao);
pm.close();
System.out.println("3");
for (Object o : Model.findAll(Option.class))
System.out.println(((Option) o).getValue());
Я ожидаю, что результат будет:
1
A
2
B
3
Но вместо этого он даетя:
1
A
2
A
B
3
A
B
Есть предложения, что я делаю не так?(кстати, я использую нетранзакционную RW с включенным RetainValues)