Как получить количество всех объектов на втором уровне отношения один-ко-многим?[Джава] - PullRequest
0 голосов
/ 28 февраля 2019

У меня есть три объекта: Фабрика, Орден и Предмет в отношениях один ко многим, как это:

У Фабрики много заказов
В ордере много элементов

Мне нужно получитьобщее количество / количество всех товаров для всех заказов, зарегистрированных на выбранной фабрике.Я сделал это так ...

    Factory factory = factoryService.findOne(factoryId);
    List<Order> orders = factory.getOrders();
    int count=0;
    for(Order o: orders){
    if (o.isDeleted()!=true)
    int numberOfItems = o.getItems().size();
    count+= numberOfItems;
    }
}

Я сделал то же самое с «мягким» удалением - когда я помечал Фабрику как удаленную, мне нужно было найти все Заказы и связанные с ними предметы для выбранной Фабрики и отметить их как удаленные.хорошо.

Все работает нормально, но у меня есть только тестовые записи в базе данных, и я не уверен, что это способ сделать это, если у вас большая база данных с большим количеством записей ... Так что мне было интересноЕсть какой-то элегантный и более эффективный способ сделать это.

Я работаю с Java Spring Boot и PostgreSQL

Ответы [ 2 ]

0 голосов
/ 28 февраля 2019

Вы можете попробовать JPA Query

List<Order> findByFactoryIdAndIsDeletedFalse(Long factoryId);
0 голосов
/ 28 февраля 2019

Я лично думаю, что родной query легко решит вашу проблему.используя что-то вроде:

SELECT COUNT(*) FROM items where id IN (select item_id from orders where factory_id = 'factoryId');

решило бы вашу проблему быстрее.

...