Community
Participate
Working Groups
>The following call to getKeyClassFields(null) when there is no pkClass seems odd and has no effect - I think we should just be returning null directly instead of performing an unused get call. >See code coverage, this if is true 9 times out of 10923. Maybe in the past the getKeyClassFields() call did more than just do a get. >package org.eclipse.persistence.internal.jpa; /** Stores the fields for this classes compound primary key class if required. */ protected KeyElementAccessor[] keyClassFields; public class CMP3Policy extends CMPPolicy { 147 10923 public Class getPKClass() { 148 10923 if(this.pkClass == null && getPKClassName() == null) { 149 9 ---> getKeyClassFields(null); 150 } 151 10923 return this.pkClass; } >Testing org.eclipse.persistence.mappings.AggregateCollectionMapping[redStripes] on EntityTypeImpl@14900486:ExpertBeerConsumer [ javaType: class org.eclipse.persistence.testing.models.jpa.inherited.ExpertBeerConsumer descriptor: RelationalDescriptor(org.eclipse.persistence.testing.models.jpa.inherited.ExpertBeerConsumer --> [DatabaseTable(CMP3_CONSUMER), DatabaseTable(EXPERT_CONSUMER)]), mappings: [org.eclipse.persistence.mappings.DirectToFieldMapping[id-->CMP3_CONSUMER.ID], org.eclipse.persistence.mappings.DirectToFieldMapping[version-->CMP3_CONSUMER.VERSION], org.eclipse.persistence.mappings.DirectToFieldMapping[name-->CMP3_CONSUMER.NAME], org.eclipse.persistence.mappings.DirectToFieldMapping[iQ-->EXPERT_CONSUMER.CONSUMER_IQ], org.eclipse.persistence.mappings.OneToManyMapping[coronaBeersToConsume], org.eclipse.persistence.mappings.OneToManyMapping[blueBeersToConsume], org.eclipse.persistence.mappings.OneToManyMapping[telephoneNumbers], org.eclipse.persistence.mappings.OneToManyMapping[certifications], org.eclipse.persistence.mappings.OneToManyMapping[heinekenBeersToConsume], org.eclipse.persistence.mappings.OneToManyMapping[blueLightBeersToConsume], org.eclipse.persistence.mappings.OneToManyMapping[alpineBeersToConsume], org.eclipse.persistence.mappings.OneToManyMapping[becksBeersToConsume], org.eclipse.persistence.mappings.OneToManyMapping[canadianBeersToConsume], org.eclipse.persistence.mappings.AggregateCollectionMapping[redStripes], org.eclipse.persistence.mappings.DirectCollectionMapping[designations], org.eclipse.persistence.mappings.DirectCollectionMapping[acclaims], org.eclipse.persistence.mappings.DirectMapMapping[celebrations], org.eclipse.persistence.mappings.DirectMapMapping[awards], org.eclipse.persistence.mappings.DirectMapMapping[quotes], org.eclipse.persistence.mappings.ManyToManyMapping[committees], org.eclipse.persistence.mappings.AggregateObjectMapping[accredidation], org.eclipse.persistence.mappings.AggregateCollectionMapping[records]]] Thread [Thread-3] (Suspended (breakpoint at line 149 in CMP3Policy)) CMP3Policy.getPKClass() line: 149 MapAttributeImpl<X,K,V>.<init>(ManagedTypeImpl<X>, CollectionMapping, boolean) line: 82 EntityTypeImpl<X>(ManagedTypeImpl<X>).initialize() line: 1067 MetamodelImpl.initialize() line: 351 MetamodelImpl.<init>(DatabaseSession) line: 88 MetamodelImpl.<init>(EntityManagerFactory) line: 98 EntityManagerFactoryImpl.getMetamodel() line: 433 EntityManagerImpl.getMetamodel() line: 2054 AdvancedJPAJunitTest.testMetamodelMinimalSanityTest() line: 194 this CMP3Policy (id=109) descriptor RelationalDescriptor (id=114) fieldToAccessorMap HashMap<K,V> (id=117) forceUpdate null keyClassFields CMPPolicy$KeyElementAccessor[0] (id=121) mappedClass null modificationDeferralLevel 2 nonDeferredCreateTime 0 pessimisticLockingPolicy null pkClass null pkClassName null updateAllFields null
>see related bug# 290048
>This no longer blocks bug # 266912 - as we have workarounds for bug# 294811 and bug# 294765 as well.
Created attachment 178085 [details] simple fix
checked into 2.2 through revision 8127
The Eclipselink project has moved to Github: https://github.com/eclipse-ee4j/eclipselink