例如,假设我有一个名为PersonAnimal
的桥表。我想搜索所有具有给定动物ID的人。到目前为止,查询如下:
Animal animal = getById(Animal.class, animalId)
ObjectSelect
.query(PersonAnimal.class)
.where(PersonAnimal.ANIMAL.eq(animal))
.select(context)
但是,以上代码段的第一行显示我首先必须从数据库中检索相关对象。我想摆脱该数据库查找,而是做类似的事情:
ObjectSelect
.query(PersonAnimal.class)
.where(PersonAnimal.ANIMAL_ID.eq(animalId)) // <- Find by ID instead
.select(context)
有可能吗?
我正在运行4.1版的Apache Cayenne ORM。
答案 0 :(得分:0)
当我发布问题时,我找到了答案。您需要使用Expression
对象创建一个Property
,如下所示:
val findByIdExpr = Property.create(PersonAnimal.ANIMAL.name, Long::class.java).eq(yourId)
val gotList = ObjectSelect
.query(PersonAnimal.class)
.where(findByIdExpr)
.select(context)
以上代码位于Kotlin中,但从Java角度也很容易理解。