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



这与我之前讨论的通过外键ID查找行的问题有点相关。这个问题旨在通过主键ID查找对象列表。

在下面的代码中,我试图通过提供id列表来查找Person对象的列表。但是ApacheCayenne不能做到这一点,因为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。

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

ExpressionFactory.inDbExp(Person.ID_PK_COLUMN, listOfIds)

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

最新更新