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