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

Michael Dick closed 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.1
>
>   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

        

Reply via email to