【发布时间】:2015-12-12 15:12:21
【问题描述】:
当执行这个从数据存储中进行选择的java代码时,由于第一行出现了一个异常,那么我该如何解决这个异常呢? 例外:
javax.persistence.PersistenceException: Explicit persistence provider error(s) occurred for "transactions-optional" after trying the following discovered implementations: org.datanucleus.api.jpa.PersistenceProviderImpl from provider: org.datanucleus.api.jpa.PersistenceProviderImpl
代码:
PrintWriter out = resp.getWriter();
try {
EntityManagerFactory emfactory = Persistence
.createEntityManagerFactory("transactions-optional");
EntityManager entitymanager = emfactory.createEntityManager();
javax.persistence.Query query = entitymanager.createQuery("Select u from test u");
List<test> list = (List<test>) query.getResultList();
out.print(list.size());
} catch (Exception e) {
out.println(e.toString());
} finally {
out.close();
}
persistence.xml:
<persistence-unit name="transactions-optional">
<provider>
org.datanucleus.store.appengine.jpa.DatastorePersistenceProviderImpl
</provider>
<properties>
<property name="datanucleus.NontransactionalRead" value="true" />
<property name="datanucleus.NontransactionalWrite" value="true" />
<property name="datanucleus.ConnectionURL" value="appengine" />
</properties>
</persistence-unit>
</persistence>
【问题讨论】:
-
你可以试试
} catch (Exception e) { e.printStackTrace( out ); }- 也许有嵌套异常? -
javax.persistence.PersistenceException:在尝试以下发现的实现后,“事务可选”发生显式持久性提供程序错误:来自提供程序的 org.datanucleus.api.jpa.PersistenceProviderImpl:org.datanucleus .api.jpa.PersistenceProviderImpl
-
引起:org.datanucleus.metadata.InvalidClassMetaDataException:类 s.follows 具有应用程序标识,但未指定 objectid-class 具有 0 个主键字段。无法使用 SingleFieldIdentity。
-
@Kenney 我在包 s 中的项目中有课程跟随
-
谢谢 - 用堆栈跟踪更新问题没关系(甚至更好)。根据this,当您使用 ApplicationIdentity 时,您需要定义一个主键。你能用
s.follows类更新问题吗?
标签: java google-app-engine jpa jpa-2.0 google-cloud-datastore