Так что я застрял на этой проблеме около 3 недель.Я прочитал это: http://code.google.com/appengine/docs/java/datastore/jdo/relationships.html, и это, похоже, не работает.По сути, у меня есть постоянный объект, который называется пул, и мне нужно добавить игроков в этот пул.Игроки также являются постоянными объектами.У меня есть неизвестные отношения между пулом и игроками, где в пуле есть набор идентификаторов игроков (primaryKey ids ...)
Итак, что я пробовал: 1) Я использовал Long в качестве основногоключ к обоим, это не сработало.2) Пробовал использовать Key из appengine в качестве первичного ключа, но это не сработало, потому что вы не можете использовать реализацию Key на стороне клиента.Ни один из обходных путей, которые я нашел, не работает, и объект передачи данных небрежный / грязный / errorprone / hackish и всякого рода плохой.3) Попытка использовать строку в качестве идентификатора, как это ...
@Extension(vendorName="datanucleus", key="gae.encoded-pk", value="true")
private String id;
, и это тоже не сработало.Когда я пытаюсь добавить строку в ее набор, как это ...
public void addPlayers(Pool pool, List<String> players) {
PersistenceManager pm = getPersistenceManagerFactory().getPersistenceManager();
try {
pm.currentTransaction().begin();
Pool oldPool = pm.getObjectById(Pool.class, pool.getID());
for(String id : players) {
oldPool.addPlayer(id);
System.out.println("Added id:" + id);
}
pm.currentTransaction().commit();
} catch (Exception e) {
pm.currentTransaction().rollback();
e.printStackTrace();
} finally {
pm.close();
}
}
, она молча провалится.Как и в ... это просто не сохраняется их.
Любые предложения будут хороши.Это для школьного проекта, поэтому, к сожалению, я вынужден сделать это в GWT, используя JDO.Мои проф и ТА не могут мне помочь, потому что они не знакомы с GWT ... забавно ... так что это мое последнее средство:)
Спасибо!