通过主键 ID 查找对象列表 - Apache Cayenne

Finding a list of objects by Primary Key ID - Apache Cayenne

这与我之前的 有点相关,我在其中讨论了通过外键 ID 查找行。本题针对的是通过主键ID查找对象列表。

在下面的代码中,我试图通过提供 ID 列表来查找 Person 对象的列表。但是 Apache Cayenne 不能这样做,因为 ID_PK_COLUMN 是一个字符串而不是 Property.

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

如何按 ID 查找 Person 对象列表?

我知道我们有 Cayenne.objectForPK 但只找到一个对象。

使用 Apache Cayenne 4.1。

由于在 Cayenne 中通常不会将 ID 映射为对象属性,并且 "ID_PK_COLUMN" 是一个 "db:" 属性,您需要为 [= 构建一个 "db" 表达式20=] 方法参数。有一个 API:

ExpressionFactory.inDbExp(Person.ID_PK_COLUMN, listOfIds)

(顺便说一句,Property 只是 ExpressionFactory 之上的语法糖)