Google App Engine: JDO делает работу, JPA - нет - PullRequest
0 голосов
/ 17 марта 2010

Я настроил проект, используя Jdo и Jpa. Я использовал аннотацию Jpa, чтобы объявить свою сущность. Затем я настраиваю свои тестовые случаи на основе LocalTestHelper (из документации Google App Engine). Когда я запускаю тест, звонок на makePersistent из Jdo:PersistenceManager в порядке; вызов persist из Jpa:EntityManager вызвал ошибку:

java.lang.IllegalArgumentException: Type ("org.seamoo.persistence.jpa.model.ExampleModel") is not that of an entity but needs to be for this operation
    at org.datanucleus.jpa.EntityManagerImpl.assertEntity(EntityManagerImpl.java:888)
    at org.datanucleus.jpa.EntityManagerImpl.persist(EntityManagerImpl.java:385)
Caused by: org.datanucleus.exceptions.NoPersistenceInformationException: The class "org.seamoo.persistence.jpa.model.ExampleModel" is required to be persistable yet no Meta-Data/Annotations can be found for this class. Please check that the Meta-Data/annotations is defined in a valid file location.
    at org.datanucleus.ObjectManagerImpl.assertClassPersistable(ObjectManagerImpl.java:3894)
    at org.datanucleus.jpa.EntityManagerImpl.assertEntity(EntityManagerImpl.java:884)
    ... 27 more

Как это может быть? Ниже приведена ссылка на компактный исходный код проектов maven, которые воспроизводят эту проблему: Обновлено : http://seamoo.com/jpa-bug-reproduce-compact.tar.gz

Выполните цель теста maven над родительским pom, и вы заметите, что 3/4 теста из org.seamoo.persistence.jdo.JdoGenericDAOImplTest пройдены, а все тесты из org.seamoo.persistence.jpa.JpaGenericDAOImplTest не пройдены.

1 Ответ

2 голосов
/ 17 марта 2010

Таким образом, вы либо не улучшили свои классы моделей, либо не предоставили для них метаданные постоянства (XML, аннотации) (во время выполнения). Журнал сообщает вам достаточно информации. И я действительно не думаю, что представление людей с некоторыми tgz с 3 отдельными проектами и ожидание, что они найдут определенный класс, на который вы ссылаетесь, можно было бы назвать «оптимальным использованием их времени». Сократите это до фактического класса, его метаданных и образца Main

...