Oh, I think I know what this is...

Both your orderings need to be relative to Table1, as that's the query root. So 
you may rewrite it like this, to create a "path" from Table1 to Table2 to 
LIBELLE attribute:

   .orderBy(Table1.LIBELLE1.asc())
   .orderBy(Table1.TO_TABLE2.dot(Table2.LIBELLE2).asc())

Andrus


> On Jun 24, 2019, at 2:10 PM, Andrus Adamchik <and...@objectstyle.org> wrote:
> 
> Actually the original query should work. Calling 
> "query.orderBy(x).orderBy(y)" should keep both orderings. 
> 
>>>    .orderBy(Table1.LIBELLE1.asc())
>>>    .orderBy(Table2.LIBELLE2.asc()) --> dont work
> 
> Any more details what happens if you do that?
> 
> Andrus
> 
> 
>> On Jun 24, 2019, at 12:03 PM, Maxim Petrusevich 
>> <mpetrusev...@objectstyle.com> wrote:
>> 
>> As I know, Cayenne has ordering which uses list of orderings.
>> 
>> orderBy(Collection<Ordering> orderings)
>> 
>> You should create list with items which will have Ordering type. Something
>> like this:
>> 
>> List<Ordering> orderings = new ArrayList<>();
>> 
>> orderings.add(new Ordering(attribute, sortOrder))
>> ...
>> 
>> // attribute here, is a string which describes your attribute in "cayenne
>> style" (e.g. Table1.SOME_FIELD.getName()) // sort order is a cayenne
>> specified type of ordering: SortOrder.ASCENDING or SorterOrder.DESCENDING,
>> see SortOrder class for details ObjectSelect.query(Table1.class)
>> .prefetch(Table1.TO_TABLE2.joint()) .orderBy(orderings)
>> .select(getObjectContext())
>> 
>> 
>> On Mon, Jun 24, 2019 at 11:48 AM abapseres <abapse...@bapseres.fr> wrote:
>> 
>>> Hello,
>>> 
>>> I would like to sort query results with a prefetched table propertie, but
>>> it don't work :
>>> 
>>> 
>>> ObjectSelect.query(Table1.class)
>>>    .prefetch(Table1.TO_TABLE2.joint())
>>>    .orderBy(Table1.LIBELLE1.asc())
>>>    .orderBy(Table2.LIBELLE2.asc()) --> dont work
>>>    .select(getObjectContext())
>>> 
>>> 
>>> Is it possible to do something like that ?
>>> 
>>> Thank you
>>> 
> 

Reply via email to