Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [eclipselink-users] PROGRESS: Sv: Re: Value of DiscriminatorValue not persisted

På tirsdag 20. august 2013 kl. 17:28:39, skrev Christopher Delahunt <christopher.delahunt@xxxxxxxxxx>:
Hello Andreas,

Can you provide the stack trace from the debugger where you noticed the
  ObjectBuilder.buildRow was called on the EmailPart
ObjectBuilder/Descriptor?  Short of reproducing it locally, that might
show the code path taken and point to how the wrong
objectbuilder/descriptor is getting used.  If you are able to debug
further, I'd go back from that point and see how that ObjectBuilder was
looked up.
 
I think I'm on to something.
 
I see that in ObjectBuilder.createObjectChangeSet() a call to:
 
        ObjectChangeSet changes = (ObjectChangeSet)uowChangeSet.getObjectChangeSetForClone(clone);

This is where "changes" results in a change-set with the wrong class because somehow the UnitOfWorkChangeSet.cloneToObjectChangeSet contains a mapping for the new object (name clone) with a value of ObjectChangeSet[EmailPart] instead of EmailSinglePart.
 
public org.eclipse.persistence.sessions.changesets.ObjectChangeSet getObjectChangeSetForClone(Object clone) {
    if ((clone == null) || (this.cloneToObjectChangeSet == null)) {
        return null;
    }
    return this.cloneToObjectChangeSet.get(clone); // This map contains an entry with the wrong value.
}
 
I'm trying to figure out how the wrong value for ObjectChangeSet is created and put into "cloneToObjectChangeSet".
 
"http-bio-8080-exec-242@27491" daemon prio=5 tid=0x14d nid=NA runnable
  java.lang.Thread.State: RUNNABLE
      at org.eclipse.persistence.internal.sessions.UnitOfWorkChangeSet.getObjectChangeSetForClone(UnitOfWorkChangeSet.java:416)
      at org.eclipse.persistence.internal.descriptors.ObjectBuilder.createObjectChangeSet(ObjectBuilder.java:2867)
      at org.eclipse.persistence.descriptors.changetracking.AttributeChangeTrackingPolicy.createObjectChangeSet(AttributeChangeTrackingPolicy.java:83)
      at org.eclipse.persistence.descriptors.changetracking.DeferredChangeDetectionPolicy.calculateChanges(DeferredChangeDetectionPolicy.java:91)
      at org.eclipse.persistence.descriptors.changetracking.DeferredChangeDetectionPolicy.calculateChangesForNewObject(DeferredChangeDetectionPolicy.java:48)
      at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.calculateChanges(UnitOfWorkImpl.java:662)
      at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.commitToDatabaseWithChangeSet(UnitOfWorkImpl.java:1516)
      at org.eclipse.persistence.internal.sessions.RepeatableWriteUnitOfWork.commitRootUnitOfWork(RepeatableWriteUnitOfWork.java:277)
      at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.commitAndResume(UnitOfWorkImpl.java:1169)
      at org.eclipse.persistence.internal.jpa.transaction.EntityTransactionImpl.commit(EntityTransactionImpl.java:132)
      at org.springframework.orm.jpa.JpaTransactionManager.doCommit(JpaTransactionManager.java:513)
      at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:755)
      at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:724)
      at org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:475)
      at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:270)
      at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:94)
      at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
      at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
      at com.sun.proxy.$Proxy102.addAttachmentToEmail(Unknown Source:-1)
 
 
 
--
Andreas Joseph Krogh <andreak@xxxxxxxxxxxx>      mob: +47 909 56 963
Senior Software Developer / CTO - OfficeNet AS - http://www.officenet.no
Public key: http://home.officenet.no/~andreak/public_key.asc
 

Back to the top