这与我之前的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。
答案 0 :(得分:1)
由于在Cayenne中通常不将id映射为对象属性,并且“ ID_PK_COLUMN”是“ db:”属性,因此您需要为“ where”方法参数构建一个“ db”表达式。有一个API:
ExpressionFactory.inDbExp(Person.ID_PK_COLUMN, listOfIds)
(顺便说一句,Property
只是ExpressionFactory
之上的语法糖)