Community
Participate
Working Groups
While processing the dericed id the order of processing the Accessors ist very important. To take care about this the method already contains a part like this: if (referenceAccessor.hasDerivedId()) { referenceAccessor.processDerivedId(processing, processed); } And the referenceAccessor is delegating to the descriptor: public boolean hasDerivedId() { return ! getDescriptor().getDerivedIdAccessors().isEmpty(); } This Method also returns "false" for Inheritance-Subclasses where the Inheritance-Superclass has a dericed Id! That's while the following fails. If someOtherClass is processed before city will be processed, the implementation actually will return "referenceAccessor.hasDerivedId() = false". class composedKey{ @id int idFieldOne @id int idFieldTwo } class city{ @id composedKey myKey; } class mayorCity extends city{ // no Id-Fields } class someOtherClass{ @id mayorCity myMayorCitie; }
Created attachment 257274 [details] Patch to solve the problem
The Eclipselink project has moved to Github: https://github.com/eclipse-ee4j/eclipselink