У меня есть сущность Base с отношением "многие к одному" с вложенной сущностью. Я хочу заказать запрос по Nested.name, где name может быть нулевым. Даже если имя равно нулю, я хочу, чтобы запрос вернул эту строку. Поэтому я пытаюсь заставить EclipseLink генерировать запросы, которые LEFT JOIN объединяет их вместе, вместо того, чтобы выбирать из обеих таблиц.
Я аннотировал отношения между Base и Nested с помощью аннотации @JoinFetch следующим образом:
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "BASE_ID")
@JoinFetch(value = JoinFetchType.OUTER)
private Nested nested;
Однако это никак не влияет на запросы, генерируемые EclipseLink. Фактически сгенерированный запрос
SELECT ... FROM BASE t0, NESTED t1 WHERE (t1.ID = t0.BASE_ID) ORDER BY t1.NAME ASC...
в то время как я ожидаю чего-то вроде
SELECT ... FROM BASE t0 LEFT JOIN NESTED t1 ON (t1.ID = t0.BASE_ID) ORDER BY t1.NAME ASC...
Я использую API критериев JPA 2.0 для создания и выполнения запросов. Даже если я явно построю объединенный запрос с использованием API критериев, результирующий запрос будет выглядеть как первый без объединений. Явное присоединение при построении запроса, похоже, нормально работает с Hibernate, но не влияет на результирующий запрос в EclipseLink.
Вероятно, мне здесь не хватает чего-то базового, поэтому любые советы приветствуются.
Спасибо