We have just moved over from
toplink to eclipselink, and none of our embedded objects are
being correctly populated on calls to em.find() (maybe others
to). When debugging I can see that the correctly populated
object has been returned from the db (and is in a cache?), but
when building / copying/ cloning that object to return to the
caller of em.find() it is failing to pull the value out of that
object into the returned object. It appears that in here
(org.eclipse.persistence.internal.descriptors.PersistenceObjectAttributeAccessor.getAttributeValueFromObject(Object) ):
public Object getAttributeValueFromObject(Object object) {
return ((PersistenceObject)object)._persistence_get(this.attributeName);
}
the object passed in is the object containing the embedded
object, yet this.attributeName is name of the field in the
embedded object - in this case 'value' and returns null as there
is no attribute named 'value' in the object passed in. I can
only see that it would work if the embedded object itself was
passed in, or if the attribute name was name of the embedded
object.
in the calling method next down the stack frame the direct to
field mapping is
org.eclipse.persistence.mappings.DirectToFieldMapping[value- -
>WSSDBA.WBR_USER.ACHOLLOOKUPONLY].
Something is not quite right with the weaving or something
elseewhere, has anyone seen anything similar ?
Eclipselink 2.2.0.
I am trying to reproduce this is a standalone app/ ear but not
having much look reproducing in such a scenario.
Thanks
this PersistenceObjectAttributeAccessor PersistenceObjectAttributeAccessor (id=4134) PersistenceObjectAttributeAccessor 4134
attributeField Field Field (id=4156) Field 4156
attributeName String "value" (id=4096) String 4096
isReadOnly boolean false boolean
isWriteOnly boolean false boolean
object Object User (id=3760) User 3760
_persistence_fetchGroup FetchGroup null null
_persistence_inLiquidityGroup_vh WeavedAttributeValueHolderInterface ValueHolder (id=3822) ValueHolder 3822
_persistence_listener PropertyChangeListener null null
_persistence_portfolio_vh WeavedAttributeValueHolderInterface ValueHolder (id=3851) ValueHolder 3851
_persistence_primaryKey Object "WSS" (id=3852) String 3852
_persistence_session Session null null
_persistence_shouldRefreshFetchGroup boolean false boolean
acHolLookupOnly JpaBoolean JpaBoolean (id=3853) JpaBoolean 3853
_persistence_listener PropertyChangeListener null null
value String "0" (id=4172) String 4172
areaUnit String "0058" (id=3854) String 3854
aspClientId int 0 int
bankManager JpaBoolean JpaBoolean (id=3855) JpaBoolean 3855
city String "ZAOPS" (id=3856) String 3856
cityUnit String "0054" (id=3857) String 3857
cmAllowCpwAdjustments JpaBoolean JpaBoolean (id=3858) JpaBoolean 3858
cmAllowOverrideExtBals JpaBoolean JpaBoolean (id=3859) JpaBoolean 3859
cmAllowOverrideWssBals JpaBoolean JpaBoolean (id=3860) JpaBoolean 3860
cmCashAdjusmentsToBeReviewed JpaBoolean JpaBoolean (id=3861) JpaBoolean 3861
cmTargetBalancingToBeReviewed JpaBoolean JpaBoolean (id=3862)
Daemon Thread [p: thread-pool-1; w: 93] (Suspended (breakpoint at line 30 in PersistenceObjectAttributeAccessor))
PersistenceObjectAttributeAccessor.getAttributeValueFromObject(Object) line: 30
DirectToFieldMapping(DatabaseMapping).getAttributeValueFromObject(Object) line: 523
DirectToFieldMapping(AbstractDirectMapping).valueFromRow(AbstractRecord, JoinedAttributeManager, ObjectBuildingQuery, CacheKey, AbstractSession, boolean) line: 1273
DirectToFieldMapping(DatabaseMapping).readFromRowIntoObject(AbstractRecord, JoinedAttributeManager, Object, CacheKey, ObjectBuildingQuery, AbstractSession, boolean) line: 1325
ObjectBuilder.buildAttributesIntoObject(Object, CacheKey, AbstractRecord, ObjectBuildingQuery, JoinedAttributeManager, boolean, AbstractSession) line: 344
AggregateObjectMapping.buildAggregateFromRow(AbstractRecord, Object, CacheKey, JoinedAttributeManager, ObjectBuildingQuery, boolean, AbstractSession, boolean) line: 362
AggregateObjectMapping.readFromRowIntoObject(AbstractRecord, JoinedAttributeManager, Object, CacheKey, ObjectBuildingQuery, AbstractSession, boolean) line: 1415
ObjectBuilder.buildAttributesIntoObject(Object, CacheKey, AbstractRecord, ObjectBuildingQuery, JoinedAttributeManager, boolean, AbstractSession) line: 344
ObjectBuilder.buildProtectedObject(boolean, ObjectBuildingQuery, AbstractRecord, AbstractSession, Object, ClassDescriptor, JoinedAttributeManager) line: 821
ObjectBuilder.buildObject(boolean, ObjectBuildingQuery, AbstractRecord, AbstractSession, Object, ClassDescriptor, JoinedAttributeManager) line: 657
ObjectBuilder.buildWorkingCopyCloneNormally(ObjectBuildingQuery, AbstractRecord, UnitOfWorkImpl, Object, ClassDescriptor, JoinedAttributeManager) line: 612
ObjectBuilder.buildObjectInUnitOfWork(ObjectBuildingQuery, JoinedAttributeManager, AbstractRecord, UnitOfWorkImpl, Object, ClassDescriptor) line: 565
ObjectBuilder.buildObject(ObjectBuildingQuery, AbstractRecord, JoinedAttributeManager) line: 497
ObjectBuilder.buildObject(ObjectLevelReadQuery, AbstractRecord) line: 456
ReadObjectQuery(ObjectLevelReadQuery).buildObject(AbstractRecord) line: 723
ReadObjectQuery.registerResultInUnitOfWork(Object, UnitOfWorkImpl, AbstractRecord, boolean) line: 766
ReadObjectQuery.executeObjectLevelReadQuery() line: 451
ReadObjectQuery(ObjectLevelReadQuery).executeDatabaseQuery() line: 1080
ReadObjectQuery(DatabaseQuery).execute(AbstractSession, AbstractRecord) line: 808
ReadObjectQuery(ObjectLevelReadQuery).execute(AbstractSession, AbstractRecord) line: 1040
ReadObjectQuery.execute(AbstractSession, AbstractRecord) line: 412
ReadObjectQuery(ObjectLevelReadQuery).executeInUnitOfWork(UnitOfWorkImpl, AbstractRecord) line: 1126
RepeatableWriteUnitOfWork(UnitOfWorkImpl).internalExecuteQuery(DatabaseQuery, AbstractRecord) line: 2842
RepeatableWriteUnitOfWork(AbstractSession).executeQuery(DatabaseQuery, AbstractRecord, int) line: 1521
RepeatableWriteUnitOfWork(AbstractSession).executeQuery(DatabaseQuery, AbstractRecord) line: 1503
RepeatableWriteUnitOfWork(AbstractSession).executeQuery(DatabaseQuery) line: 1463
EntityManagerImpl.executeQuery(ReadObjectQuery, LockModeType, AbstractSession) line: 781
EntityManagerImpl.findInternal(ClassDescriptor, AbstractSession, Object, LockModeType, Map<String,Object>) line: 725
EntityManagerImpl.find(Class<T>, Object, LockModeType, Map<String,Object>) line: 619
EntityManagerImpl.find(Class<T>, Object) line: 498
EntityManagerWrapper.find(Class<T>, Object) line: 291
UserServiceEJB.getUserFullWithLazyProps(String, EnumSet<EnumUserLazyProps>) line: 104
NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method]
NativeMethodAccessorImpl.invoke(Object, Object[]) line: 39
DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25
Method.invoke(Object, Object...) line: 597
EJBSecurityManager.runMethod(Method, Object, Object[]) line: 1011
SecurityUtil.invoke(Method, Invocation, Object, Object[], Container, SecurityManager) line: 175
StatelessSessionContainer(BaseContainer).invokeTargetBeanMethod(Method, Invocation, Object, Object[], SecurityManager) line: 2929
StatelessSessionContainer(BaseContainer).intercept(Invocation) line: 4020
EJBObjectInvocationHandler.invoke(Class, Method, Object[]) line: 203
EJBObjectInvocationHandlerDelegate.invoke(Object, Method, Object[]) line: 77
$Proxy1079.getUserFullWithLazyProps(String, EnumSet) line: not available
NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method]
NativeMethodAccessorImpl.invoke(Object, Object[]) line: 39
DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25
Method.invoke(Object, Object...) line: 597
ReflectiveTie._invoke(String, InputStream, ResponseHandler) line: 154
CorbaServerRequestDispatcherImpl.dispatchToServant(Object, CorbaMessageMediator, byte[], ObjectAdapter) line: 687
CorbaServerRequestDispatcherImpl.dispatch(MessageMediator) line: 227
CorbaMessageMediatorImpl.handleRequestRequest(CorbaMessageMediator) line: 1846
CorbaMessageMediatorImpl.handleRequest(RequestMessage, CorbaMessageMediator) line: 1706
CorbaMessageMediatorImpl.handleInput(RequestMessage_1_2) line: 1088
RequestMessage_1_2.callback(MessageHandler) line: 223
CorbaMessageMediatorImpl.handleRequest(MessageMediator) line: 806
CorbaMessageMediatorImpl.dispatch() line: 563
CorbaMessageMediatorImpl.doWork() line: 2567
ThreadPoolImpl$WorkerThread.run() line: 555
|