You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by "Andrus Adamchik (JIRA)" <ji...@apache.org> on 2013/02/21 14:38:12 UTC
[jira] [Commented] (CAY-1798) ROP: Reverse relationships of
prefetched entity objects are not filled during server to client objects
conversion
[ 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