Description
the following exception stack trace is seen in kodo :
[java] Caused by: java.lang.ClassCastException: com.sample.TestTableId
[java] at org.apache.openjpa.datacache.DataCacheStoreManager.loadAll(DataCacheStoreManager.java:461)
[java] at org.apache.openjpa.kernel.DelegatingStoreManager.loadAll(DelegatingStoreManager.java:121)
[java] at org.apache.openjpa.kernel.BrokerImpl.findAll(BrokerImpl.java:984)
[java] at org.apache.openjpa.kernel.BrokerImpl.findAll(BrokerImpl.java:1027)
[java] at org.apache.openjpa.kernel.BrokerImpl.findAll(BrokerImpl.java:913)
[java] at org.apache.openjpa.kernel.AbstractPCData.toRelationFields(AbstractPCData.java:217)
[java] at org.apache.openjpa.kernel.AbstractPCData.toNestedFields(AbstractPCData.java:184)
[java] at org.apache.openjpa.kernel.AbstractPCData.toField(AbstractPCData.java:78)
[java] at org.apache.openjpa.kernel.PCDataImpl.loadField(PCDataImpl.java:197)
[java] at org.apache.openjpa.kernel.PCDataImpl.load(PCDataImpl.java:147)
[java] at org.apache.openjpa.datacache.DataCacheStoreManager.initialize(DataCacheStoreManager.java:343)
[java] at org.apache.openjpa.kernel.DelegatingStoreManager.initialize(DelegatingStoreManager.java:111)
[java] at org.apache.openjpa.kernel.ROPStoreManager.initialize(ROPStoreManager.java:57)
[java] at org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:894)
[java] at kodo.kernel.KodoBroker.initialize(KodoBroker.java:65)
Reason behind the above exception is because when application identity class is used;
In openJPA, ObjectId is generated by enhancer generated method pcnewObjectIdInstance and it returns wrapped identity class
like as follows.
public Object pcNewObjectIdInstance()
So, the change was not affected to OpenJPA code.
However, in OpenJPA derived products like Kodo, pcNewObjectIdInstance returns raw application identity class instance.
Due to this "oidList.add((OpenJPAId) sm.getObjectId())" throws classcast exception.