java – OpenJPA说:你已经为FooBar提供了colums,但是这个映射在这个上下文中不能有列

前端之家收集整理的这篇文章主要介绍了java – OpenJPA说:你已经为FooBar提供了colums,但是这个映射在这个上下文中不能有列前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我有一些Java实体类在我的生产代码中运行良好.我正在为这个应用程序编写一个自动化测试,我正在重用同一个类.

当测试应用程序以这种方式创建其实体管理器时:

  1. Properties props = new Properties();
  2. props.setProperty("provider","org.apache.openjpa.persistence.PersistenceProviderImpl");
  3. props.setProperty(...);
  4. EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("foobar-upgrade-restful-test",props);
  5. EntityManager entityManager = entityManagerFactory.createEntityManager();

应用程序抛出一条错误消息,告知:

  1. Caused by: Meta.MappingInfo.assertNoSchemaComponents(MappingInfo.java:382)
  2. at org.apache.openjpa.jdbc.Meta.strats.FlatClassStrategy.map(FlatClassStrategy.java:51)
  3. at org.apache.openjpa.jdbc.Meta.ClassMapping.setStrategy(ClassMapping.java:392)
  4. at org.apache.openjpa.jdbc.Meta.RuntimeStrategyInstaller.installStrategy(RuntimeStrategyInstaller.java:56)
  5. at org.apache.openjpa.jdbc.Meta.MappingRepository.prepareMapping(MappingRepository.java:411)
  6. at org.apache.openjpa.Meta.MetaDataRepository.preMapping(MetaDataRepository.java:762)
  7. at org.apache.openjpa.Meta.MetaDataRepository.resolve(MetaDataRepository.java:651)
  8. ... 72 more

我并不是真的理解错误消息,因为同一个实体bean在Glassfish下的应用程序中工作,而persistence.xml也几乎相同. (在测试中我使用RESOURCE_LOCAL tx而不是JTA,但我怀疑它与此错误有关系.

你知道什么是错的吗?

最佳答案
错误表示您为com.foo.bar.server.commontypes.job.CompositeJob提供的映射信息存在问题.

我猜测它适用于JTA的原因,但不是资源本地很可能与在不同环境中加载/处理元数据的方式有些奇怪.如果您从实体发布相关的映射数据,将会很有帮助.

猜你在找的Java相关文章