给出此查询:
final List list =
new JPAQuery(entityManager).from(qdevice).leftJoin(qdevice.parentDevice)
.list(Projections.bean(Device.class, qdevice.id, qdevice.parentDevice));
(parentDevice是Device的类型)
问题是,当parentDevice不为null时,查询仅返回Device。为什么?如何获得任何价值?如果我从投影中取出qdevice.parentDevice比结果好。
QueryDsl版本是3.2.0
答案 0 :(得分:2)
你能试试吗
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
的引用可能会被视为内部联接,因为您不会将其与左联接相关联。