Как создать сущности в одной группе сущностей? - PullRequest
0 голосов
/ 02 февраля 2010

Я создаю приложение на основе движка приложений Google (Java) с использованием JDO для постоянства.

Может кто-нибудь дать мне пример или указать мне какой-нибудь код, который показывает сохранение нескольких объектов (одного типа) с использованием javax.jdo.PersistenceManager.makePersistentAll () в транзакции.

По сути, мне нужно понять, как поместить несколько объектов в одну группу объектов, чтобы их можно было сохранить с помощью makePersistentAll () внутри транзакции.

Ответы [ 4 ]

1 голос
/ 06 февраля 2010

я сделал это:

public static final Key root_key = KeyFactory.createKey("Object", "RootKey");

...

так что типичный постоянный объект хранилища данных будет устанавливать идентификатор в конструкторе, а не получать его автоматически

public DSO_MyType(string Name, Key parent)
    {
        KeyFactory.Builder b = new KeyFactory.Builder(parent);;
        id = b.addChild(DSO_MyType.class.getSimpleName() , Name).getKey();
    }

и вы передаете root_key в качестве родителя

Я не уверен, что вы можете передать разных родителей одинаковым объектам

1 голос
/ 03 февраля 2010

Этот раздел документов посвящен именно этому.

0 голосов
/ 29 марта 2010

Гопи, AFAIK, вам не нужно этого делать ... это должно работать (не проверял):

List<User> userList = new ArrayList<User>();
userList.add(new User("a"));
userList.add(new User("b"));
userList.add(new User("c"));
UserDAO().getInstance().addObjects(userList);

Опять же, AFAIK, это должно поместить все эти объекты в одингруппа объектов.Я хотел бы знать, если я не прав.

0 голосов
/ 03 февраля 2010

Спасибо за ответ Ник.

В этом документе рассказывается только о неявной обработке групп сущностей механизмом приложения при его родительско-дочерних отношениях. Я хочу сохранить несколько объектов одного типа, используя PeristentManager.makePersistentAll (список) в транзакции. Если объекты не совпадают с Entity Group, это вызывает исключение. В настоящее время я могу сделать это, как показано ниже, но думаю, что для этого должен быть лучший и более подходящий подход -

User u1 = new User("a");
UserDAO.getInstance().addObject(user1); 
// UserDAO.addObject uses PersistentManager.makePersistent() in transaction and user 
// object now has its Key set. I want to avoid this step.

User u2 = new User("x"); 
u2.setKey(KeyFactory.createKey(u1.getKey(),User.class.getSimpleName(), 100 /*some random id*/)); 

User u3 = new User("p");
u3.setKey(KeyFactory.createKey(u1.getKey(), User.class.getSimpleName(), 200)); 

UserDAO.getInstance().addObjects(Arrays.asList(new User[]{u2, u3})); 
// UserDAO.addObjects uses PersistentManager.makePersistentAll() in transaction.

Хотя этот подход работает, проблема заключается в том, что для создания группы сущностей вам нужно зависеть от уже существующей сущности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...