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

Reply via email to