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

时间:2018-11-30 23:21:42

标签: java kotlin orm apache-cayenne

这与我之前的question有关,在此我讨论了通过外键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。

1 个答案:

答案 0 :(得分:1)

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

ExpressionFactory.inDbExp(Person.ID_PK_COLUMN, listOfIds)

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