Arhn - архитектура программирования

Порядок QueryDSL по отношению равен нулю

Я пытаюсь заказать запрос querydsl так, чтобы сначала были упорядочены все сущности с нулевым значением для отношения, но я не могу понять, как это сделать.

Я ожидал:

query.orderBy(
  QBook.book.original.isNull().asc()
)

Чтобы быть тем, что мне нужно, где original - это самореферентные отношения с Book.

Но это вызывает исключение:

Caused by: org.hibernate.hql.ast.QuerySyntaxException: unexpected AST node: is null 
[select book
from com.mydomain.Book book 
order by book.original is null asc]

(Настоящее исключение намного длиннее, но это должна быть вся соответствующая информация.)

Я также пробовал

QBook.book.original.name.asc().nullsFirst()

Но здесь есть две проблемы. Во-первых, он удаляет все книги без original, и даже если это не так, он будет сортировать их по имени, когда я хочу, чтобы они отсортировывались только по тому, является ли это значение нулевым.

Версия гибернации: 3.6.6.Final

Версия QueryDSL: 3.2.3

23.02.2015

  • Благодаря этому исправлению ошибки похоже, что запрос dsl 3.3.0 или более поздней версии QBook.book.original.name.asc().nullsFirst() по крайней мере, включайте нулевые значения благодаря левым соединениям. 24.02.2015
  • Вы пробовали это с более новой версией Querydsl? 25.02.2015
  • Было бы непрактично пытаться обновить Querydsl прямо сейчас, но, надеюсь, мы сможем обновить его в не столь отдаленном будущем. 26.02.2015

Ответы:


1

Вы можете использовать CaseBuilder:

query.orderBy(new CaseBuilder()
     .when(QBook.book.original.isNull())
     .then(0)
     .otherwise(1)
     .asc()
)
18.01.2017

2

Не имея лучшего решения, я планирую добавить логическое значение, указывающее, является ли original нулевым. Это значение можно легко заказать по своему усмотрению.

24.02.2015
Новые материалы

Коллекции публикаций по глубокому обучению
Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

Представляем: Pepita
Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

Советы по коду Laravel #2
1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

3 способа решить квадратное уравнение (3-й мой любимый) -
1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

Создание VR-миров с A-Frame
Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

Демистификация рекурсии
КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..