Запросы QueryDSL и нулевые значения

76
7

с учетом этого запроса:

final List list =
new JPAQuery(entityManager).from(qdevice).leftJoin(qdevice.parentDevice)
.list(Projections.bean(Device.class, qdevice.id, qdevice.parentDevice));

(parentDevice - это тип устройства)

Проблема в том, что запрос возвращает только устройство, когда parentDevice не равно null. Зачем? Как вернуть какое-либо значение? Если я вынесу qdevice.parentDevice из проекции, результат будет хорош.

Версия QueryDsl - 3.2.0

спросил(а) 2021-01-19T16:57:01+03:00 3 месяца, 2 недели назад
1
Решение
76

Не могли бы вы попробовать

QDevice device = QDevice.device;
QDevice parentDevice = new QDevice("parentDevice");
List<Device> list = new JPAQuery(entityManager)
.from(device)
.leftJoin(device.parentDevice, parentDevice)
.list(Projections.bean(Device.class, device.id, parentDevice));

Ссылка на qdevice.parentDevice в list может рассматриваться как внутреннее соединение, так как вы не относитесь к левому соединению.

ответил(а) 2021-01-19T16:57:01+03:00 3 месяца, 2 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема