[
https://issues.apache.org/jira/browse/CAY-1798?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13583188#comment-13583188
]
Andrus Adamchik commented on CAY-1798:
--------------------------------------
The patch looks good to me. Maybe you can speed it up a bit by using cached
metadata for reverse relationship. I.e. this:
private void fillReverseRelationship(Object destinationTarget,
ObjRelationship relationship) {
ClassDescriptor desc =
targetResolver.getClassDescriptor(relationship.getTargetEntityName());
Property reverseProperty =
desc.getProperty(relationship.getReverseRelationshipName());
if (reverseProperty instanceof ToOneProperty) {
ToOneProperty targetReverseProperty = (ToOneProperty)
reverseProperty;
targetReverseProperty.writeProperty(destinationTarget,
null, target);
}
}
Can be rewritten using ArcProperty.getComplimentaryReverseArc() method that is
faster than looking for a descriptor and calling
"relationship.getReverseRelationshipName()".
Otherwise I think it can be applied to 3.1 and 3.2
> ROP: Reverse relationships of prefetched entity objects are not filled during
> server to client objects conversion
> -----------------------------------------------------------------------------------------------------------------
>
> Key: CAY-1798
> URL: https://issues.apache.org/jira/browse/CAY-1798
> Project: Cayenne
> Issue Type: Bug
> Components: ROP
> Affects Versions: 3.1B2
> Reporter: Dzmitry Kazimirchyk
> Attachments: CAY-1798.patch
>
>
> When doing queries with prefetches from client, reverse relationships of
> prefetched objects are not filled immediately after query execution causing
> new queries to server when accessed.
> E.g.: say we execute query for all artists with prefetch Artist -> Paintings.
> After query execution if we do artist.getPaintings().get(0).getArtist() then
> new db query will be executed.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira