Я хочу получить все A с помощью метода репозитория: < /p>
findallbybx (string x) < /p>
< /blockquote>
(который x < /code> Атрибут b )
Установлен контекст, теперь проблема:
Я получу 1000 a И для каждого из них у меня будет 2 или 3 B .
Первая проблема заключается в том, что Spring генерирует 1001 запросы, потому что для каждого , Spring Repress All All B .
Итак, я обнаружил, что @entitygraph аннотация, которая является отличным решением моей проблемы, потому что она получает все и b сразу!
Но
Я хочу отфильтровать результат с помощью x (см. Мой метод репозитория) и из -за этого, Hibernate определяет свое собственное соединение, затем @entitygraph добавит дополнительное ненужное соединение, которое даже нигде не используется в запросе. С другой стороны, без @entitygraph объекты будут извлечены один за другим ... наименьшее, когда Spring создает и b , он использует дополнительное соединение, а не Отфильтрованный.
Код: Выделить всё
SELECT a1_0.id, b2_0.x
FROM A a1_0
LEFT JOIN B b1_0
ON b1_0.a = a1_0.id
LEFT JOIN B b2_0
ON b2_0.a = a1_0.id
WHERE b1_0.x = 'string'
Подробнее здесь: https://stackoverflow.com/questions/794 ... pa-reposit