给出这个查询:
final List list =
new JPAQuery(entityManager).from(qdevice).leftJoin(qdevice.parentDevice)
.list(Projections.bean(Device.class, qdevice.id, qdevice.parentDevice));
(parentDevice 是设备类型)
问题是查询只在 parentDevice 不为空时返回设备。为什么?如何取回任何值(value)?如果我从投影中取出 qdevice.parentDevice,结果会很好。
QueryDsl版本为3.2.0
最佳答案
你能试试这个吗
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));
list
中对 qdevice.parentDevice
的引用可能会被视为内部联接,因为您没有将它与左联接相关联。
关于java - QueryDSL 投影和空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26700059/