There is one other thing I would like to understand about the scenario 
described above.


It seems that if I di pm.persist(cashflow/person); 
I can sucessfully persist the cashflow/person entity that hold an Unowned 
relationhip.

However, if before the call to to pm.persist()  I issue a:
pm.getCurrentTranstion().begin();
pm.persist(cashflow/person);
pm.getCurrentTranstion().commit();

The experiment just blows in my face with the error: try two make 
transaction on multiple persistence groups.


I am running this test with the following JDO configuration:
<persistence-manager-factory name="transactional">    
        <property name="javax.jdo.PersistenceManagerFactoryClass" 
value="org.datanucleus.api.jdo.JDOPersistenceManagerFactory"/>
        <property name="javax.jdo.option.ConnectionURL" value="appengine"/>
        <property name="datanucleus.appengine.ignorableMetaDataBehavior" 
value="ERROR"/>
<property name="datanucleus.cache.level2.type" value="None"/>
    </persistence-manager-factory>


Thanks.

On Saturday, November 3, 2012 4:03:20 PM UTC+1, Sono G. De M wrote:
>
> In the GAE documentation where unowned relationships are described, see 
> REFERENCES link, an interesting example is given using the concepts of 
> Person, Food and Favorite Food.
> The most relevant thing about this example is detail concerning the fact 
> that Food and Person correspond to independent peristence groups.
>
> The one thing I fail to uderstand is why would GAE need to update two 
> entity groups during a call to persist?
>
> Reasoning for doubt:
> (a) person and food exist in different entity groups (OK - potential for 
> problem)
> (b) person has a reference to food which it calls favoriteFood (OK - 
> potential for problem)
> (c) this relationship is unowned (Should resolve potential for problem 
> from this point persisting a Person should no longer try to affect the FOO 
> persistence group) 
> (d) Food does not even have any collection, e.g. Set<Person> 
> foodFans,  pointing to Persons  (not that it matters // it would only be 
> absoluetly inefficient trying to naviagte from FOOD to food people that are 
> food fans) // any Pseudo Forein Key should be saved on the PERSON 
> persistence group and not elsewhere)
>
> For all this,
> I fail to understand how is it possible that GAE throws the exception 
> discussed in the documentation:
> javax.jdo.JDOException: cross-group transaction need to be explicitly 
> specified, see TransactionOptions.Builder.withXGfound both Element {
> ??
>
>
> I am having just this problem.
> I have Cashflows that belong to a User persistence group wish explode when 
> I try to persistent because they UNOWN a UNI-DIRECTIONAL relationship to a 
> CashFlowCateory entity that exists in a persistence group of its own.
> I fail to undestand why cashflow would want to update the CashflowCategory 
> persistence group.
>
> The way I see it, with the Unowned annotation saying
> Key favoriteFood;
> or 
> @Unowned
> Food favoriteFood; should be absoletly identical.
> The latter being more convenient, though. 
>
>
> REFRENCE:
>
> https://developers.google.com/appengine/docs/java/datastore/jdo/relationships
>
> Relevant quote:
> "In this example, we give Person a member of type Key, where the Key is 
> the unique identifier of a Food object. If an instance of Person and the 
> instance of Food referred to byPerson.favoriteFood are *not* in the same 
> entity group, you cannot update the person and that person's favorite food 
> in a single transaction unless your JDO configuration is set to enable 
> cross-group (XG) 
> transactions<https://developers.google.com/appengine/docs/java/datastore/transactions#Cross_Group_Transactions>
> .
> "
>

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/google-appengine/-/aJPUNKw-nJ4J.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.

Reply via email to