Я настроил проект, используя 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 не пройдены.