当执行这个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/