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 giulio.ces...@gmail.com
<giulio.ces...@gmail.com> 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

Reply via email to