Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从DataNucleus/JDO版本v1迁移到v2的问题_Java_Google App Engine_Jdo_Datanucleus - Fatal编程技术网

Java 从DataNucleus/JDO版本v1迁移到v2的问题

Java 从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

我正在使用应用程序引擎。我正在尝试从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 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();
}