Я пишу службу синхронизации в Google AppEngine, но что-то на самом деле не работает для меня. То, что я хочу сделать, - это синхронизировать сущность Project (возможно, ее нужно сохранить, возможно, просто скопировать контент, кто знает), а затем искать объект типа Project (может быть, тот же проект, что и вначале, но не " t должен быть), а затем использовать его для синхронизации задачи.
Все это должно произойти в транзакции, поэтому, если синхронизация задачи завершится неудачей, проект также будет удален.
Я написал несколько строк кода, чтобы просто проверить и показать, что не так.
Этот код отлично работает и показывает мне «Project Found».
User user = userDao.findAll().get(0);
//Create a setup service...
Project project = new Project();
project.setName("TEST ABC");
project.setLastUpdated(new Date());
project.setUser(user);
projectDao.persist(project);
Project persistedProject = projectDao.find("TEST ABC", user);
if (persistedProject == null) {
System.out.println("Project not found...");
} else {
System.out.println("Project found!");
}
Поэтому здесь я не использую транзакции. Но когда я выполняю код с транзакциями:
User user = userDao.findAll().get(0);
Transaction tx = datastores.get().beginTransaction();
//Create a setup service...
Project project = new Project();
project.setName("TEST ABC");
project.setLastUpdated(new Date());
project.setUser(user);
projectDao.persist(project);
Project persistedProject = projectDao.find("TEST ABC", user);
if (persistedProject == null) {
System.out.println("Project not found...");
tx.rollback();
} else {
System.out.println("Project found!");
tx.commit();
}
Я всегда вижу «Проект не найден ...». Так как, черт возьми, я могу прочитать объект, который я только что сохранил, но еще не совершил?
BTW: Я использую twig-persist 2.0 RC1 и последний AE SDK (1.7).
Поэтому мой вопрос в том, как я могу прочитать данные, которые были сохранены в одной транзакции.?