Как изменить родителя объекта в JDO? - PullRequest
0 голосов
/ 22 июля 2011

Я использую JDO и Google App Engine. У меня есть класс User, который имеет arrayList объектов области. Каждый объект области имеет массив списков объектов Location, который сообщает о координатах. Теперь я хочу переместить один объект области от одного пользователя другому. Я делаю объект-клон объекта области, который я хочу переместить, и помещаю его в areaList другого пользователя. А затем удалите эту область из списка 1-го пользователя с помощью удаления (индекс). Но это дает эту ошибку:

   Detected attempt to establish User("arash") as the parent of User("mh")/RunData(153) but the entity identified by User("mh")/RunData(153) is already a child of User("mh").  A parent cannot be established or changed once an object has been persisted.

Где arash и mh - пользователи, а я перемещаю область из mh в arash.

Заранее спасибо.

Как я могу решить эту проблему. Заранее спасибо.

1 Ответ

1 голос
/ 22 июля 2011

Поскольку вы не дадите никакой информации о том, как вы закодировали эти классы, у вас не будет кода, который я могу дать вам как серебряную пулю. Но может быть! Итак, вот несколько слов: -)

Проблема в том, что хранилище данных ядра App сохраняет ссылку на родителя объекта в ключе или идентификаторе (как бы вы его ни называли). И так же хорошо, как и любой хороший фреймворк, он проверяет, что вы не делаете то, что делали. :-) Отсюда и сообщение.

Когда вы клонировали «объект области», вы также клонировали его идентификатор или ключ. Правильно? Это проблема. Вы должны дать ему новый ключ или идентификатор. Это тот момент, когда я мог бы дать вам некоторый код, но вы дали мало информации, поэтому вам придется перейти на KeyFactory JavaDoc себя.

Удачи!

...