java - 执行实体管理器工厂创建语句时出现此异常

标签 java google-app-engine jpa jpa-2.0 google-cloud-datastore

当执行这个java代码时,从数据存储中进行选择,由于第一行出现了异常,那么我该如何解决这个异常? 异常(exception):

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();
}

持久性.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>

最佳答案

正如您在评论(!)中发布的异常所说

org.datanucleus.metadata.InvalidClassMetaDataException: Class s.follows has application-identity and no objectid-class specified yet has 0 primary key fields. Unable to use SingleFieldIdentity. 

但是您没有发布此类(为什么?!您不认为人们可能想看到它,因为它是异常(exception)的内容吗?)。

解决方案:将字段标记为 @Id 就像所有 JPA 文档所说的那样。

关于java - 执行实体管理器工厂创建语句时出现此异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34241379/

相关文章:

java - 在两个不同的 html 表中显示从 GAE 数据存储中检索到的数据

java - 检查给定的数列是否属于算术级数、几何级数或调和级数

java - 如何将剪贴板中的数据粘贴到文本区域

java - Jsoup选择不同的Div类型并依次处理

php - Google App Engine 上的 Wordpress(定价)

java - 使用 JPA 1.0 来替代 @ElementCollection 来持久化 Map<String,String>?

java - 在java中我可以将方法存储在变量中吗?

python - 当我使用 App Engine SDK 在本地主机中部署我的谷歌云端点 python 应用程序时出错

java - hibernate/jpa 提示 "flush during cascade"

java - Spring Boot JPA 获取对 EntityManagerFactory 的引用