我有一些 Java 实体类在我的生产代码中运行良好。我正在为此应用程序编写一个自动化测试,我在其中重用了完全相同的类。
当测试应用程序以这种方式创建其实体管理器时:
Properties props = new Properties();
props.setProperty("provider", "org.apache.openjpa.persistence.PersistenceProviderImpl");
props.setProperty(...);
EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("foobar-upgrade-restful-test", props);
EntityManager entityManager = entityManagerFactory.createEntityManager();
应用程序抛出一条错误消息,告知:
Caused by: <openjpa-2.2.0-r422266:1244990 fatal user error> org.apache.openjpa.persistence.ArgumentException: You have supplied columns for "com.foo.bar.server.commontypes.job.CompositeJob", but this mapping cannot have columns in this context.
at org.apache.openjpa.jdbc.meta.MappingInfo.assertNoSchemaComponents(MappingInfo.java:382)
at org.apache.openjpa.jdbc.meta.strats.FlatClassStrategy.map(FlatClassStrategy.java:51)
at org.apache.openjpa.jdbc.meta.ClassMapping.setStrategy(ClassMapping.java:392)
at org.apache.openjpa.jdbc.meta.RuntimeStrategyInstaller.installStrategy(RuntimeStrategyInstaller.java:56)
at org.apache.openjpa.jdbc.meta.MappingRepository.prepareMapping(MappingRepository.java:411)
at org.apache.openjpa.meta.MetaDataRepository.preMapping(MetaDataRepository.java:762)
at org.apache.openjpa.meta.MetaDataRepository.resolve(MetaDataRepository.java:651)
... 72 more
我不太理解错误消息,因为同一个实体 bean 在 Glassfish 下的应用程序中工作,并且 persistence.xml 也几乎相同。 (在测试中,我使用 RESOURCE_LOCAL
tx 而不是 JTA,但我怀疑它与此错误有关。
你知道哪里出了问题吗?
最佳答案
该错误表明您为 com.foo.bar.server.commontypes.job.CompositeJob
提供的映射信息存在问题。
我猜测它适用于 JTA 但不适用于本地资源的原因很可能与元数据在不同环境中加载/处理的方式有些奇怪有关。如果您发布实体中的相关映射数据,将会很有帮助。
关于java - OpenJPA 说 : You have supplied colums for FooBar but this mapping cannot have columns in this context,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13527269/