Java 从DataNucleus/JDO版本v1迁移到v2的问题
我正在使用应用程序引擎。我正在尝试从DataNucleus/JDO版本v1升级到v2。JDO2.0到JDO3.0 但是,我的代码在v2下有以下问题,在v1下工作正常 1/查询的结果给出nullPointerExceptionJava 从DataNucleus/JDO版本v1迁移到v2的问题,java,google-app-engine,jdo,datanucleus,Java,Google App Engine,Jdo,Datanucleus,我正在使用应用程序引擎。我正在尝试从DataNucleus/JDO版本v1升级到v2。JDO2.0到JDO3.0 但是,我的代码在v2下有以下问题,在v1下工作正常 1/查询的结果给出nullPointerException Query q = pm.newQuery(Company.class, query); List<Company> companies = (List<Company>) q.execute(); // this should return a
Query q = pm.newQuery(Company.class, query);
List<Company> companies = (List<Company>) q.execute();
// this should return a non-empty list
for (Company company: companies) -> NullPointerException
在此之后,将公司序列化并将其发送到客户端时,会得到“Type”org.datanucleus.store.types.sco.simple.ArrayList“不包括在此序列化策略可序列化的类型集中”
我在互联网上找不到任何关于这次迁移的提示或经验教训。不,你的意思是从GAE JDO插件v1迁移到GAE JDO插件v2。DataNucleus是一个单独的项目,它使用不同的版本事实上,我的意思是迁移到DataNucleus插件的v2,它对应于DataNucleus访问平台的3.0版本
public final class PMF {
private static final PersistenceManagerFactory pmfInstance =
JDOHelper.getPersistenceManagerFactory("transactions-optional");
private PMF() { pmfInstance.setDetachAllOnCommit(true); }
public static PersistenceManagerFactory get() { return pmfInstance; }
}
Company company = new Company(...);
PersistenceManager pm = PMF.get().getPersistenceManager();
try {
pm.currentTransaction().begin();
pm.makePersistent(company);
pm.currentTransaction().commit();
// because of setDetachAllOnCommit(true), the object should be detached..
} catch (Exception e) {
} finally {
if (!pm.isClosed()) pm.close();
}