You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@openjpa.apache.org by "Michael Dick (JIRA)" <ji...@apache.org> on 2011/02/17 05:12:24 UTC

[jira] Resolved: (OPENJPA-940) Using table-generator in XML descriptor results in ClassCastException

     [ https://issues.apache.org/jira/browse/OPENJPA-940?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Michael Dick resolved OPENJPA-940.
----------------------------------

       Resolution: Fixed
    Fix Version/s: 2.1.0

Should be fixed by OPENJPA-940

> Using table-generator in XML descriptor results in ClassCastException
> ---------------------------------------------------------------------
>
>                 Key: OPENJPA-940
>                 URL: https://issues.apache.org/jira/browse/OPENJPA-940
>             Project: OpenJPA
>          Issue Type: Bug
>    Affects Versions: 1.2.0, 2.0.0-M2
>         Environment: Windows XP
> Java SE 6 Update 11
>            Reporter: Ulrich Hermsen
>            Assignee: Catalina Wei
>            Priority: Critical
>             Fix For: 2.1.0
>
>   Original Estimate: 20m
>  Remaining Estimate: 20m
>
> Defining a table generator in the XML descriptor leads to a class cast exception. The reason is a probably unintentional fall through of a switch/case block in class XMLPersistenceMetaDataSerializer line 502:
> ...
>             switch (type) {
>                 case TYPE_META:
>                     serializeClass((ClassMetaData) obj, fieldAccess
>                         && propertyAccess);
>                     break;
>                 case TYPE_SEQ:
>                     if (isMappingMode())
>                         serializeSequence((SequenceMetaData) obj);
>                         // HERE SHOULD BE A break;
>                 case TYPE_QUERY:
>                     serializeQuery((QueryMetaData) obj);
>                     break;
> ...
> As a result I get the following stack:
> 219  testPU  INFO   [main] openjpa.Runtime - Starting OpenJPA 1.2.0
> 688  testPU  INFO   [main] openjpa.jdbc.JDBC - Using dictionary class "org.apache.openjpa.jdbc.sql.DerbyDictionary".
> 3329  testPU  WARN   [main] openjpa.MetaData - Found duplicate generator "tableGen" in "class com.daimler.tss.lab.jpa.pojo.Slave".  Ignoring.
> 3830  testPU  INFO   [main] openjpa.MetaData - Writing to file "C:\Uli\Workspaces\TSS_ganymede_2\OpenJPA Test\build\classes\META-INF\test-orm.xml".
> 3986  testPU  INFO   [main] openjpa.MetaData - Writing sequence "tableGen".
> Exception in thread "main" <openjpa-1.2.0-r422266:683325 nonfatal general error> org.apache.openjpa.persistence.PersistenceException: org.apache.openjpa.jdbc.meta.SequenceMapping cannot be cast to org.apache.openjpa.meta.QueryMetaData
> 	at org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:196)
> 	at org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker(DelegatingBrokerFactory.java:142)
> 	at org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:192)
> 	at org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:145)
> 	at org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:56)
> 	at com.daimler.tss.lab.jpa.test.RelationshipManagementTest.createMaster(RelationshipManagementTest.java:47)
> 	at com.daimler.tss.lab.jpa.test.RelationshipManagementTest.main(RelationshipManagementTest.java:39)
> Caused by: java.lang.ClassCastException: org.apache.openjpa.jdbc.meta.SequenceMapping cannot be cast to org.apache.openjpa.meta.QueryMetaData
> 	at org.apache.openjpa.persistence.XMLPersistenceMetaDataSerializer.serialize(XMLPersistenceMetaDataSerializer.java:504)
> 	at org.apache.openjpa.lib.meta.XMLMetaDataSerializer.serialize(XMLMetaDataSerializer.java:257)
> 	at org.apache.openjpa.lib.meta.XMLMetaDataSerializer.serialize(XMLMetaDataSerializer.java:121)
> 	at org.apache.openjpa.lib.meta.XMLMetaDataSerializer.serialize(XMLMetaDataSerializer.java:90)
> 	at org.apache.openjpa.meta.AbstractCFMetaDataFactory.serialize(AbstractCFMetaDataFactory.java:479)
> 	at org.apache.openjpa.meta.AbstractCFMetaDataFactory.store(AbstractCFMetaDataFactory.java:234)
> 	at org.apache.openjpa.jdbc.meta.MappingTool.record(MappingTool.java:538)
> 	at org.apache.openjpa.jdbc.meta.MappingTool.record(MappingTool.java:453)
> 	at org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory.synchronizeMappings(JDBCBrokerFactory.java:159)
> 	at org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory.newBrokerImpl(JDBCBrokerFactory.java:119)
> 	at org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:189)
> 	... 6 more
> May I suggest to run findBugs on your source code. That would have found this section for sure. Does anyone test the XML descriptor stuff?

-- 
This message is automatically generated by JIRA.
-
For more information on JIRA, see: http://www.atlassian.com/software/jira