我正在尝试让我的GAE应用程序从数据存储区中提取一些记录,但仍然可以获得此信息:
javax.persistence.PersistenceException: Class PersistableItem for query has not been resolved. Check the query and any imports specification
这是来自这里的方法:
public List<PersistableItem> listItems() {
EntityManager em = EMFService.get().createEntityManager();
// Read the existing entries
Query q = em.createQuery("select * from PersistableItem");
List<PersistableItem> items = q.getResultList();
return items;
}
据我所知,这是关于导入我的PersistableItem类但我很困惑,因为我已经在.java代码文件中这样做了。
答案 0 :(得分:2)
类“PersistableItem”是否存在于项目中(或者是项目的依赖项)。它是否具有@Entity
类级别注释。它是否实现Serializable。在你的JPQL中尝试使用类的完全限定名称(“select * from package1.package2.PersistableItem”)
答案 1 :(得分:2)
错误消息很奇怪,因此这可能不是您唯一的错误,但您的查询错误。 select *是SQL,而不是JPQL。正确的查询是
select p from PersistableItem p
答案 2 :(得分:2)
即使使用正确的JPQL查询也遇到了同样的错误,并解决了在persistence.xml中添加类声明的问题
<persistence-unit name="appengine-transactions-optional">
<provider>org.datanucleus.api.jpa.PersistenceProviderImpl</provider>
<class>it.gustaff.data.Place</class>
<class>it.gustaff.data.Menu</class>
<properties>
<property name="datanucleus.NontransactionalRead" value="true"/>
<property name="datanucleus.NontransactionalWrite" value="true"/>
<property name="datanucleus.ConnectionURL" value="appengine"/>
</properties>
</persistence-unit>