2011-12-20 4 views
4

У меня есть сущность Base, с отношением «много-к-одному» к сущности, вложенной. Я хочу заказать запрос по Nested.name, где имя может быть нулевым. Даже если имя равно null, я хочу, чтобы запрос возвращал эту строку. Поэтому я пытаюсь заставить EclipseLink генерировать запросы, которые LEFT JOINs вместе, вместо того, чтобы выбирать из обеих таблиц.@JoinFetch ничего не делает (EclipseLink)

Я аннотированный связь между базой и вложенными с @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... 

Я использую JPA 2.0 Criteria API для создания и выполнения запросов. Даже если я явно создаю объединенный запрос с использованием API критериев, результирующий запрос будет выглядеть как первый, без объединений. Явное присоединение при построении запроса, похоже, отлично работает с Hibernate, но не влияет на результирующий запрос в EclipseLink.

У меня, вероятно, отсутствует что-то основное здесь, поэтому любые советы приветствуются.

Благодаря

ответ

2

Я думаю, что проблема в вашем OrderBy (который не использует внешнее соединение, так аннулирует внешнее выборки присоединится).

Как вы настраиваете заказ? Вы используете для этого внешнее соединение?

+0

В основном то, что делает код, это «Присоединить join = queryRoot.join (« вложенные », JoinType.LEFT); query.orderBy (criteriaBuilder.asc (join.get ("name"))); ' – Jonatan

+1

Проблема заключалась в том, что я сначала выполнил' queryRoot.get ("вложенные") ', а затем' queryRoot.join ... ' , что, по-видимому, вызвало первое «получить», чтобы указать соединение как соединение INNER. Спасибо, что указал мне в правильном направлении! – Jonatan

Смежные вопросы