Дополнительное ненужное соединение с фильтрацией и EntityGraph в репозитории Spring Data JPAJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Дополнительное ненужное соединение с фильтрацией и EntityGraph в репозитории Spring Data JPA

Сообщение Anonymous »

У меня есть объект A , который имеет список объекта B .
Я хочу получить все 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»