首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GAE - JPA - datanucleus数据检索错误- PESSIMISTIC_READ

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

Stack Overflow用户
提问于 2013-10-23 11:38:16
回答 4查看 373关注 0票数 2

我是App Engine 1.8.5及其默认的nucleus数据存储版本。我在本地Eclipse安装程序中工作,它有GAE插件。

它在我的本地机器上成功地进行了所有数据存储和检索。它在Google App engine服务器上成功部署。没有数据存储关系的URL工作得很好,没有任何问题。问题出在服务器中的数据存储检索上。我通过GAE datanuclues引擎将JPA api用于数据存储。

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

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

代码语言:javascript
复制
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)

persistence.xml

代码语言:javascript
复制
<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

代码语言:javascript
复制
public final class EMF {
    private static final EntityManagerFactory emfInstance = Persistence
            .createEntityManagerFactory("transactions-optional");

    private EMF() {
    }

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

回答 4

Stack Overflow用户

发布于 2015-01-03 05:40:55

您可能将persistence-api-1.0.jar添加到了类路径中。geronimo-jpa2.0spec-1.0.jar有较新版本的JPA (LockModeType有PESSIMISTIC_READ字段),所以只需删除persistence- API -1.0.jar,一切都会正常工作。您的应用程序可以在本地运行,因为您可能在类路径上有更高的GAE容器。

票数 1
EN

Stack Overflow用户

发布于 2013-10-26 08:54:07

我以前也遇到过这个错误,而且它也发生在gae而不是eclipse上。当您尝试在表中没有任何数据之前从表中读取数据时,就会发生这种情况。尝试先插入一条记录..也许可以创建一个初始化servlet。我不认为你的代码有任何问题

票数 0
EN

Stack Overflow用户

发布于 2014-09-10 20:48:41

错误很简单,在jar geronimo-jpa2.0spec-1.0中找不到成员字段PESSIMISTIC_READ。这个jar的所有版本我都试过了。它根本找不到这个成员。所以我所做的就是将这个枚举添加到项目中

打包javax.persistence;

公共枚举LockModeType {读,写,乐观,OPTIMISTIC_FORCE_INCREMENT,PESSIMISTIC_READ,PESSIMISTIC_WRITE,PESSIMISTIC_FORCE_INCREMENT,无}

问题解决了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19532340

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档