【发布时间】:2011-01-28 11:14:54
【问题描述】:
我已经使用 Jdo 和 Jpa 设置了一个项目。
我使用 Jpa Annotation 来声明我的实体。
然后我根据LocalTestHelper(来自 Google App Engine 文档)设置我的测试用例。
当我运行测试时,
拨打Jdo:PersistenceManager 的makePersistent 完全可以;
对Jpa:EntityManager 的persist 的调用引发错误:
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
在父 pom 上执行 maven 测试目标,您会注意到来自 org.seamoo.persistence.jdo.JdoGenericDAOImplTest 的 3/4 测试通过了,而来自 org.seamoo.persistence.jpa.JpaGenericDAOImplTest 的所有测试都失败了。
【问题讨论】:
标签: google-app-engine jpa maven