Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

OpenJPA says: You have supplied colums for FooBar but this mapping cannot have columns in this context

Tags:

java

jpa

openjpa

I have some Java entity classes that are working well in my production code. I am writing an automated test for this application where I am reusing the very same classes.

When the test application is creating its entity manager this way:

 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();

The applications throws an error message telling that:

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

I do not really understand the error message as the same entity bean is working in the application under Glassfish and the persistence.xml is also almost identical. (In the test I use RESOURCE_LOCAL tx instead of JTA but I doubt that it has relation with this error.

Do you have any idea what's wrong?

like image 762
jabal Avatar asked Oct 06 '22 21:10

jabal


1 Answers

The error indicates that there is a problem with the mapping information that you provided for com.foo.bar.server.commontypes.job.CompositeJob.

I'm guessing the reason it works for JTA, but not resource local most likely has to do with some oddity in the way that metadata is loaded / processed in the different environments. It would be helpful if you post the relevant mapping data from your Entity.

like image 187
Rick Avatar answered Oct 10 '22 01:10

Rick