Ошибка JPA из хранилища данных GAE - PullRequest
0 голосов
/ 18 октября 2011

Я пытаюсь, чтобы мое приложение 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.

Ответы [ 3 ]

2 голосов
/ 18 октября 2011

Сообщение об ошибке странное, так что это может быть не единственной вашей ошибкой, но ваш запрос неверен.select * - это SQL, а не JPQL.Правильный запрос:

select p from PersistableItem p
2 голосов
/ 24 октября 2012

У меня была такая же ошибка даже с правильным запросом 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>
2 голосов
/ 18 октября 2011

Является ли класс "PersistableItem" присутствующим в вашем проекте (или в зависимости от вашего проекта).Имеет ли он аннотацию @Entity уровня класса.Это реализует Сериализуемый.В вашем JPQL попробуйте использовать полное имя класса ("select * from package1.package2.PersistableItem")

...