makePersistent失败了JDO

时间:2012-01-26 18:18:46

标签: java google-app-engine jdo

我将以下代码部署到应用引擎服务器(唯一的 我可以测试JDO的地方,遗憾的是我无法在本地测试JDO 因为我没有本地BigTable实现。)

final class PMF {

  private static final PersistenceManagerFactory pmf = JDOHelper.getPersistenceManagerFactory("transactions-optional");

  private PMF() { }

  public static PersistenceManagerFactory get() { return pmf; }

}

@PersistenceCapable
class Data {
  // ...
  @Persistent
  private static List<Store> stores = new ArrayList<Store>();

  static List<Store> getStores() {

    return stores;

  }

}

...

Data.getStores().add(store);
writer.write("this line received OK by client.");
PMF.get().getPersistenceManager().makePersistent(Data.getStores()); 
writer.write("this line never received by client.");

如图所示,服务器的第一行输出是在客户端上接收的,第二行并不意味着makePersistent()失败。

任何人都知道为什么会这样?

2 个答案:

答案 0 :(得分:1)

也许很简单的事实是,没有适用于Java的标准持久性API提供静态字段的持久性。

答案 1 :(得分:1)

您可以使用ant或eclipse appengine插件在本地运行代码,从而模仿本地计算机上的BigTable。 eclipse插件还在后台运行datanucleus,并且会为您捕获这样的错误,而无需在进行更改时上传到appengine。