Rick,

OK, so in the process of trying to create a stand-alone reproducible test
of this problem I have figured out the issue.

I was not including my @MappedSuperclass entity in the persistence.xml as
a managed entity.  This seems to interfere/corrupt the internal OpenJPA
field indexing.

While it was an error on my part to omit the @MappedSuperclass from the
persistence.xml, it is somewhat confusing because the documentation
stresses that the class annotated with @MappedSuperClass is *not* an
entity.  

Also, the way in which the error manifests is extremely subtle and
confusing.  I'm assuming that the enhancer is responsible for this.  I'd
expect is to behave differently in this situation.

Should a JIRA ticket be created for this.

I do have a pretty simple maven project with a reproducible test for this
issue if you are interested.

Thanks,

Mike

On 4/25/12 9:50 AM, "Rick Curtis" <[email protected]> wrote:

>Mike -
>
>Can you post the Entities that you're having problems with?
>
>Thanks,
>Rick
>
>On Tue, Apr 24, 2012 at 10:47 PM, Mike Goldner
><[email protected]>wrote:
>
>> I have an entity that extends an abstract MappedSuperClass class.  The
>> abstract class only declares an ID and Version field.
>>
>> When I attempt to persist the object, I get the following error:
>>
>> 2185 [main] DEBUG openjpa.Runtime  - An exception occurred while ending
>>the
>> transaction.  This exception will be re-thrown.
>> java.lang.ClassCastException: java.util.ArrayList cannot be cast to
>> java.lang.String
>> at
>>
>> 
>>org.apache.openjpa.kernel.TransferFieldManager.fetchStringField(TransferF
>>iel
>> dManager.java:76)
>>
>> I'm not familiar with the OpenJPA codebase, but I made an attempt to see
>> what was happening via the Eclipse debugger.
>>
>> It seems that while in the StateManagerImpl class there is a mismatch in
>> field numbering used to retrieve fields from my entity.  In my case, I
>>am
>> expecting to fetch a String value for my field.  While in the
>> "fetchString(int field)" method, I have a field number that corresponds
>>to
>> the field index of the _meta._allFields array.  However, when the code
>> proceeds to the "fetchStringField(int field)" method, it seems to
>>return a
>> completely different field (an ArrayList, which explains the exception).
>>
>> While it may be coincidence, I notice that there is a _pc field that
>> appears
>> to have a representation of my entity fields that is sorted
>>alphabetically
>> and does not match the ordering of the _meta._allFields field.
>>
>> I am running OpenJPA 2.2.0 with Java 6 using Derby as the DB.  I am
>> enhancing the classes at compile time using the openjpa-maven-plugin.
>>
>> Mike Goldner
>>
>>
>>
>
>
>-- 
>*Rick Curtis*


Reply via email to