java - GAE - JPA - datanucleus 数据检索错误 - PESSIMISTIC_READ

标签 java google-app-engine google-cloud-datastore datanucleus

我是 App Engine 1.8.5 及其默认的 nucleus 数据存储版本。我正在使用具有 GAE 插件的本地 Eclipse 安装程序。

它在我的本地机器上成功地用于所有数据存储和检索。它已成功部署在 Google App 引擎服务器中。没有数据存储关系的 URL 工作正常,没有任何问题。 问题在于服务器中的数据存储检索。我将 JPA api 用于使用 GAE 数据核引擎的数据存储。

问题是当我从数据存储中检索数据时,它在服务器中抛出 PESSIMISTIC_READ 错误,但在本地机器上没有。我卡住了,无法继续。

我已经粘贴了堆栈跟踪、persistence.xml 和 EMF.java 文件供您引用。请帮忙。

Caused by: java.lang.NoSuchFieldError: PESSIMISTIC_READ
    at org.datanucleus.api.jpa.JPAQuery.getResultList(JPAQuery.java:171)
    at com.ideafolks.codelist.datastore.dao.SectorDAO.getAllSector(SectorDAO.java:122)
    at com.ideafolks.codelist.restful.SectorService.getAllSector(SectorService.java:57)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:45)

持久性.xml

<persistence-unit name="transactions-optional">
    <provider>org.datanucleus.api.jpa.PersistenceProviderImpl</provider>
    <class>com.ideafolks.codelist.datastore.tables.Sector</class>
        <exclude-unlisted-classes>true</exclude-unlisted-classes>
    <properties>
        <property name="datanucleus.NontransactionalRead" value="true" />
        <property name="datanucleus.NontransactionalWrite" value="true" />
        <property name="datanucleus.ConnectionURL" value="appengine" />
        <property name="datanucleus.singletonEMFForName" value="true" /> <!-- 
        <property name="datanucleus.appengine.datastoreReadConsistency" value="EVENTUAL" />  -->
    </properties>
</persistence-unit>

EMF.java

public final class EMF {
    private static final EntityManagerFactory emfInstance = Persistence
            .createEntityManagerFactory("transactions-optional");

    private EMF() {
    }

    public static EntityManagerFactory get() {
        return emfInstance;
    }
}

最佳答案

您可能已将 persistence-api-1.0.jar 添加到您的类路径中。 geronimo-jpa_2.0_spec-1.0.jar 具有较新版本的 JPA API(LockModeType 具有 PE​​SSIMISTIC_READ 字段),因此您只需删除 persistence-api-1.0.jar,一切都会正常工作。您的应用程序在本地运行,因为您可能在类路径中拥有更高级别的 GAE 容器。

关于java - GAE - JPA - datanucleus 数据检索错误 - PESSIMISTIC_READ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19532340/

相关文章:

java - 在不活动一段时间后关闭 SWT 应用程序

java - 多项目 Maven 设置中的 GET 托管模式

java - 从 string.split() java 获取数组

java - 如何使用JDialog获取输入

asp.net - 集成 .NET 应用程序和 Google Apps 的策略

java - 如何使用 request.getParameter() 编写 JDO 查询?

java - GAE - 如何将服务器对象信息传递给客户端?

python - GAE - 如何在没有连接的情况下生活?

google-app-engine - 寻找想法/替代方案以提供匹配 GAE 数据存储查询的页面/项目计数/项目导航

google-app-engine - 不再能够使用 dev_appserver 管理控制台创建实体