Поиск списка связанных объектов по идентификатору - PullRequest
0 голосов
/ 30 ноября 2018

Скажем, например, у меня есть таблица моста под названием PersonAnimal.Я хочу найти всех людей, у которых есть данное животное.Пока что запрос выглядит так:

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.

1 Ответ

0 голосов
/ 01 декабря 2018

Как только я отправил вопрос, я нашел ответ.Вам необходимо создать 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.

...