我正在 Google AppEngine 上编写一个同步服务,但有些东西对我来说并不适用。我想要做的是同步一个实体项目(也许它需要被持久化,也许只是复制内容,谁知道),然后搜索一个项目类型的实体(可能与首先持久化的项目相同,但没有' t需要),然后用它来同步一个任务。所有这些都需要在事务中发生,因此如果任务同步失败,该项目也会被删除。
我写了几行代码来简单地测试和显示问题所在。此代码完美运行,并向我显示“找到项目”。
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();
}
我总是看到“找不到项目......”。那么我到底怎么才能读取我刚刚坚持但尚未提交的对象呢?
顺便说一句:我正在使用 twig-persist 2.0 RC1 和最新的 AE SDK (1.7)。
所以我的问题是如何读取已在同一事务中保存的数据..?