[ 
https://issues.apache.org/cayenne/browse/CAY-1183?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Andrey Razumovsky closed CAY-1183.
----------------------------------

       Resolution: Fixed
    Fix Version/s: 3.0M6

The root of the problem is that client data objects use lazy faulting, so a new 
query is generated when trying to resolve relationship. As the object in child 
context is not NEW, query is directed to parent context, and since it is not 
committed yet, RelationshipQuery is fired upon NEW object. This triggers an 
exception.
Generally I don't like the workaround, but it seems to be the only to do a soft 
fix.

> commitToParent() makes object persistence state committed, produces exception 
> when using object in parent context (ROP)
> -----------------------------------------------------------------------------------------------------------------------
>
>                 Key: CAY-1183
>                 URL: https://issues.apache.org/cayenne/browse/CAY-1183
>             Project: Cayenne
>          Issue Type: Bug
>          Components: Cayenne Core Library
>    Affects Versions: 3.0M5
>         Environment: ROP (maybe also 2t cayenne, I have not tried)
>            Reporter: Marcin Skladaniec
>            Assignee: Andrey Razumovsky
>            Priority: Critical
>             Fix For: 3.0M6
>
>
> This is a bit of pseudocode showing the problem
> Artist artist = parentContext.perfrormQuery(new 
> SelectQuery(Artist.class)).get(0);
> CayenneContext childContext = parentContext.createChildContext();
> Painting painting = childContext.newObject(Painting.class);
> painting.setArtist(artist);
> painting.setBlah...
> childContext.commitToParent();
> for(Painting p : artist.getPaintings()) 
> logger.debug("painting persistence state : 
> "+PersistenceState.persistenceStateName(p.getPersistenceState())); //all 
> objects are in state COMMITTED
> this causes no problems so far, but if one now decides to 
> p.getSomeRelatiohship();
> an exception will be raised, because the relationship has not been faulted 
> yet:
>  [java] Caused by: java.lang.Exception: [v.3.0-SNAPSHOT ${project.build.date} 
> ${project.build.time}] Can't build a query for relationship 
> 'someRelationship' for temporary id: <ObjectId:Painting, 
> TEMP:00000160F3600029>
>      [java]   at 
> org.apache.cayenne.remote.service.BaseRemoteService.processMessage(BaseRemoteService.java:160)
>   ... 25 more

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to