Поиск списка объектов по первичному ключу ID - Apache Cayenne - PullRequest
0 голосов
/ 01 декабря 2018

Это как бы связано с моим предыдущим вопросом , где я обсуждал поиск строк по идентификаторам внешних ключей.Этот вопрос направлен на поиск списка объектов по идентификатору первичного ключа.

В приведенном ниже коде я пытаюсь найти список Person объектов, предоставив список идентификаторов.Но Apache Cayenne не может этого сделать, потому что ID_PK_COLUMN является строкой, а не Property.

ObjectSelect
    .query(Person::class.java)
    .where(Person.ID_PK_COLUMN.in(listOfIds)) // <- Cannot perform this
    .select(context)

Как мне найти список объектов Person по идентификатору?

Я знаю, что мыесть Cayenne.objectForPK, но он находит только один объект.

Использование Apache Cayenne 4.1.

1 Ответ

0 голосов
/ 01 декабря 2018

Поскольку идентификаторы, как правило, не отображаются в качестве свойств объекта в Cayenne, а "ID_PK_COLUMN" является свойством "db:", вам необходимо создать выражение "db" для аргумента метода where.Для этого есть API:

ExpressionFactory.inDbExp(Person.ID_PK_COLUMN, listOfIds)

(Кстати, Property - это просто синтаксический сахар поверх ExpressionFactory)

...