QueryDSL投影和空值

时间:2014-11-02 13:55:36

标签: java jpa querydsl

给出此查询:

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

1 个答案:

答案 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的引用可能会被视为内部联接,因为您不会将其与左联接相关联。