我是App Engine 1.8.5及其默认的nucleus数据存储版本。我在本地Eclipse安装程序中工作,它有GAE插件。
它在我的本地机器上成功地进行了所有数据存储和检索。它在Google App engine服务器上成功部署。没有数据存储关系的URL工作得很好,没有任何问题。问题出在服务器中的数据存储检索上。我通过GAE datanuclues引擎将JPA api用于数据存储。
问题是,当我从数据存储检索数据时,它在服务器上抛出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)persistence.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;
}
}发布于 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容器。
发布于 2013-10-26 08:54:07
我以前也遇到过这个错误,而且它也发生在gae而不是eclipse上。当您尝试在表中没有任何数据之前从表中读取数据时,就会发生这种情况。尝试先插入一条记录..也许可以创建一个初始化servlet。我不认为你的代码有任何问题
发布于 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,无}
问题解决了。
https://stackoverflow.com/questions/19532340
复制相似问题