Hi,
I encountered a situation which I cannot explain.
Maybe somebody can help me out.
I'm trying to fetch an entity of class A via Query, which has a
ManyToOne mapping to an entity
of class B which has a OneToMany mapping (using an IndirectSet) to
entities of class C.
I am not providing a FetchType, so I expect the default LAZY.
Weaving is not used.
As you can see in the stacktrace below (line marked with >>>),
EclipseLink calls size() on the
IndirectSet which causes that the actual entities of the indirection
collection will be fetched,
which of course is not desired. (in my case there are 10000 of
entities in that Set which have
additional references to other entities which causes my application
to stop working)
In EclipseLink 2.1 and 1.1.x I cannot see this behavior.
My question:
- Is this an expected behavior?
- If so: How can I force EclipseLink to not call size() on the
IndirectSet?
Thank you and best regards,
Patric
Here's the important part of the stackstrace:
...
RepeatableWriteUnitOfWork(UnitOfWorkImpl).getCommitManager() line: 1854
UnitOfWorkQueryValueHolder(UnitOfWorkValueHolder).instantiateImpl()
line: 152
UnitOfWorkQueryValueHolder(UnitOfWorkValueHolder).instantiate()
line: 222
UnitOfWorkQueryValueHolder(DatabaseValueHolder).getValue() line: 88
IndirectSet.buildDelegate() line: 192
IndirectSet.getDelegate() line: 343
IndirectSet.size() line: 500
CollectionContainerPolicy.sizeFor(Object) line: 177
TransparentIndirectionPolicy.instantiateObject(Object, Object) line:
369
OneToManyMapping(ForeignReferenceMapping).buildCloneFromRow(AbstractRecord,
JoinedAttributeManager, Object, CacheKey, ObjectBuildingQuery,
UnitOfWorkImpl, AbstractSession) line: 280
ObjectBuilder.buildAttributesIntoWorkingCopyClone(Object, CacheKey,
ObjectBuildingQuery, JoinedAttributeManager, AbstractRecord,
UnitOfWorkImpl, boolean) line: 1415
ObjectBuilder.buildWorkingCopyCloneFromRow(ObjectBuildingQuery,
JoinedAttributeManager, AbstractRecord, UnitOfWorkImpl, Object)
line: 1561
ObjectBuilder.buildObjectInUnitOfWork(ObjectBuildingQuery,
JoinedAttributeManager, AbstractRecord, UnitOfWorkImpl, Object,
ClassDescriptor) line: 561
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
NoIndirectionPolicy.valueFromQuery(ReadQuery, AbstractRecord,
AbstractSession) line: 323
ManyToOneMapping(ForeignReferenceMapping).valueFromRowInternal(AbstractRecord,
JoinedAttributeManager, ObjectBuildingQuery, AbstractSession) line:
2061
ManyToOneMapping(OneToOneMapping).valueFromRowInternal(AbstractRecord,
JoinedAttributeManager, ObjectBuildingQuery, AbstractSession) line:
1635
ManyToOneMapping(ForeignReferenceMapping).valueFromRow(AbstractRecord,
JoinedAttributeManager, ObjectBuildingQuery, CacheKey,
AbstractSession, boolean) line: 1950
ManyToOneMapping(ForeignReferenceMapping).buildCloneFromRow(AbstractRecord,
JoinedAttributeManager, Object, CacheKey, ObjectBuildingQuery,
UnitOfWorkImpl, AbstractSession) line: 274
ObjectBuilder.buildAttributesIntoWorkingCopyClone(Object, CacheKey,
ObjectBuildingQuery, JoinedAttributeManager, AbstractRecord,
UnitOfWorkImpl, boolean) line: 1415
ObjectBuilder.buildWorkingCopyCloneFromRow(ObjectBuildingQuery,
JoinedAttributeManager, AbstractRecord, UnitOfWorkImpl, Object)
line: 1561
ObjectBuilder.buildObjectInUnitOfWork(ObjectBuildingQuery,
JoinedAttributeManager, AbstractRecord, UnitOfWorkImpl, Object,
ClassDescriptor) line: 561
ObjectBuilder.buildObject(ObjectBuildingQuery, AbstractRecord,
JoinedAttributeManager) line: 497
ObjectBuilder.buildObject(ObjectLevelReadQuery, AbstractRecord)
line: 456
ReadAllQuery(ObjectLevelReadQuery).buildObject(AbstractRecord) line:
723
ReadAllQuery.registerResultInUnitOfWork(Object, UnitOfWorkImpl,
AbstractRecord, boolean) line: 742
ReadAllQuery.executeObjectLevelReadQuery() line: 423
ReadAllQuery(ObjectLevelReadQuery).executeDatabaseQuery() line: 1080
ReadAllQuery(DatabaseQuery).execute(AbstractSession, AbstractRecord)
line: 808
ReadAllQuery(ObjectLevelReadQuery).execute(AbstractSession,
AbstractRecord) line: 1040
ReadAllQuery.execute(AbstractSession, AbstractRecord) line: 383
ReadAllQuery(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,
List) line: 1477
EJBQueryImpl<X>.executeReadQuery() line: 484
EJBQueryImpl<X>.getSingleResult() line: 772
... (my application calls getSingleResult())
_______________________________________________
eclipselink-users mailing list
eclipselink-users@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/eclipselink-users