I am not that well familiar with the AshwoodEntitySorter code, but I guess we'll need to look at the specific mapping and objects participating in commit to see what condition triggers it and to take further action.
@SortWeight may help (unless the cycle is between the objects of the same type). You will need to install WeightedAshwoodEntitySorter in the DI container to take advantage of it. Andrus On Jul 13, 2011, at 4:30 PM, Michael Gentry wrote: > Hi Andrus, > > We sometimes get this exception: > > Sorting objects for [entity] failed. Cycles found. > > This is obviously coming out of AshwoodEntitySorter.java. Do you > think the annotation would help in that circumstance? I'm just now > starting to investigate this and another graph issue we are having. > > Thanks, > > mrg > > > On Fri, Mar 25, 2011 at 3:48 AM, Andrus Adamchik <[email protected]> > wrote: >> You can already override the sorter via DI (and create a chain yourself, >> decorated as EntitySorter interface). The sorter has the same scope as >> Cayenne stack, although I guess internal implementation can be done as >> dynamic strategy based on contextual parameters. >> >> Suggested annotation is a way to attach a per-entity piece of configuration >> that can be used by the sorter. Due to the nature of the annotations it will >> also have a stack lifetime scope. >> >> Andrus >> >> >> On Mar 25, 2011, at 1:03 AM, Aristedes Maniatis wrote: >> >>> How pluggable is the sorter? Could a user specify a different sorter for >>> one particular commit? Or for a whole context? Or chain the sorters so that >>> Ashwood is used first and then another sorter is used to adjust the results >>> under particular circumstances? >>> >>> >>> Ari >>> >>> On 25/03/11 5:00 AM, Andrus Adamchik wrote: >>>> Here is an algorithm analysis task for graph-theory-minded folks. I came >>>> up with the @SortWeight solution below for a very specific problem when >>>> commit operation ordering can not be derived from the cross-entity >>>> relationships in the DataMap. Now I wondering how many other cases raised >>>> on this list that are not addressed by the default AshwoodEntitySorter can >>>> be solved by manually overriding entities ordering "weight"? >>>> >>>> Andrus >>>> >>>> >>>> On Mar 24, 2011, at 4:50 PM, Andrus Adamchik (JIRA) wrote: >>>> >>>>> cayenne-lifecycle: @SortWeight annotation >>>>> ------------------------------------------ >>>>> >>>>> Key: CAY-1553 >>>>> URL: https://issues.apache.org/jira/browse/CAY-1553 >>>>> Project: Cayenne >>>>> Issue Type: Task >>>>> Components: Lifecycle Extensions >>>>> Affects Versions: 3.1M2 >>>>> Reporter: Andrus Adamchik >>>>> Assignee: Andrus Adamchik >>>>> >>>>> >>>>> Sometimes it is useful to manually override the operation ordering for >>>>> some entities. E.g. per CAY-1547 we support UuidRelationships, but saving >>>>> an object with a UuidRelationship to another object does not generate >>>>> correct ordering. So we may want to override default ordering for >>>>> entities annotated with @UuidRelationship. E.g.: >>>>> >>>>> @SortWeight(1.1) >>>>> @UuidRelationship("UUID") >>>>> class My extends _My {} >>>>> >>>>> Note that this approach will not be able to address all shortcomings of a >>>>> generic AshwoodEntitySorter. It is somewhat of a hack. So it will be >>>>> placed in cayenne-lifecycle and treated as an "extension". >>>>> >>>>> -- >>>>> This message is automatically generated by JIRA. >>>>> For more information on JIRA, see: http://www.atlassian.com/software/jira >>>>> >>>> >>> >>> -- >>> --------------------------> >>> Aristedes Maniatis >>> GPG fingerprint CBFB 84B4 738D 4E87 5E5C 5EFA EF6A 7D2E 3E49 102A >>> >> >> >
