Я столкнулся с проблемой EclipseLink, когда несколько запросов к БД выполнялись вместо одного запроса. Я нашел следующие потоки SO, которые предоставляют аннотационное решение @BatchFetch, которое помогает выполнять один главный запрос
Как сделать выборку по соединению вместо выборки в EclipseLink?
Как определить аннотацию EclipseLink для следующего?
Но я использую EclipseLink 1.2, и классы вышеупомянутой аннотации поддерживаются только EclipseLink 2+. Благодарим Вас за помощь в выборе альтернативного решения для 1.2. Я попытался перенести весь проект на EclipseLink 2, но у меня возникают проблемы с отображением, которые у меня не хватает терпения, чтобы их исправить.
Я использую JPA EclipseLink
Аннотация @BatchFetch просто устанавливает отображение для использования пакетного чтения. Вы можете сделать это в EclipseLink 1.2, используя DescriptorCustomizer и API ForeignReferenceMapping.
Одним из способов является использование подсказки запроса, например:
query.setHint(QueryHints.BATCH, "c.sourceTable");
. В этом случае отношение sourceTable для всех c будет загружено одним запросом, а не по одному на каждый запрос.c.
sourceTable
c