Re: Ordering objects by primary keys
Aristedes Maniatis <[email protected]>
| Newsgroups | gmane.comp.java.cayenne.user |
|---|---|
| Message-ID | <[email protected]> |
Its old, but still fast and works well: https://markmail.org/search/?q=list%3Aorg.apache.cayenne.user+%22db%3A%22 Ari On 30/10/21 1:01am, Michael Gentry wrote: > Fun fact: I have years worth of Cayenne mailing list content in GMail, but > you can't search for db: in it because GMail uses prefix:term as an > advanced search option and it doesn't know what to do with db: ... > > > On Thu, Oct 28, 2021 at 2:38 AM [email protected] < > [email protected]> wrote: > >> Is there any point in the documentation where this "db:" prefix has been >> documented? >> >> Cheers, >> Giulio Cesare >> >> On Wed, Oct 27, 2021 at 11:23 PM [email protected] < >> [email protected]> wrote: >> >>> It did work! 🤩 >>> >>> Thanks Nikita. 🙏 >>> >>> Cheers, >>> >>> Giulio Cesare >>> >>> >>> On Wed, Oct 27, 2021 at 7:46 PM Nikita Timofeev < >> [email protected]> >>> wrote: >>> >>>> Hi! >>>> >>>> You could try to add "db:" prefix to the primary key name. >>>> Something like this: orderBy("db:ARTIST_ID") >>>> >>>> On Wed, Oct 27, 2021 at 8:14 PM [email protected] >>>> <[email protected]> wrote: >>>>> Hello, >>>>> >>>>> I am try to run some BBD tests integrated with Cayenne (succesfully, >> so >>>>> far). >>>>> I am at the point where I can not fully specify the record/object to >>>> select >>>>> in the test script, and so I am trying to select the latest object >>>>> inserted, matching some lose criteria. >>>>> >>>>> Unfortunately, I don't have a generic "insertion date" in all my >>>> entities; >>>>> so the next best think I could think of, is to use the value of the PK >>>>> (generated using Postgres sequences) to sort the selected objects >> (DESC) >>>>> and picking the first match. >>>>> >>>>> To achieve this, I have tried with this code: >>>>> >>>>> String dbEntityName = >>>>> >> context.getEntityResolver().getObjEntity(entityName).getDbEntityName(); >>>>> ImmutableList<Ordering> orderBy = >>>>> >> context.getEntityResolver().getDbEntity(dbEntityName).getPrimaryKeys().stream() >>>>> .map(attribute -> new Ordering(attribute.getName(), >>>> SortOrder.DESCENDING)) >>>>> .collect(ImmutableList.toImmutableList()) >>>>> ; >>>>> BaseDataObject latestInstance = >>>>> ObjectSelect.query(clazz).orderBy(orderBy).selectFirst(context); >>>>> >>>>> but I get the following error: >>>>> - Can't resolve path component: [{EntityName}.{primaryKeyFieldName}] >>>>> >>>>> I realize that {EntityName} and {primaryKeyFieldName} live in two >>>> separate >>>>> contexts (Entities vs DB); but I have no more ideas on how to >> progress. >>>>> Does anyone have any suggestions on how to do this stunt? >>>>> >>>>> Cheers, >>>>> Giulio Cesare >>>> >>>> >>>> -- >>>> Best regards, >>>> Nikita Timofeev >>>>