java - QueryDSL 投影和空值

标签 java jpa querydsl

给出这个查询:

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/

相关文章:

java - 即使在 jsp 中,.jspf 也无法编译

java - 如果不存在 JPA 插入对象,如果存在则不执行任何操作

java - 如何让 QueryDSL 动态从 QClass 获取路径的字段类型?

java - 无法从字符串转换为时间戳;格式错误

java - struts 2.3上传前预览图片

java - 信任库是否需要子 CA 证书?

java - java新手想了解执行流程

sql - HSQLDB/Oracle - IN 子句中超过 1000 项

mysql - JPA+Hibernate...关联不是单一查询,而是为join执行多个查询

spring - 使用 QueryDsl 谓词和 spring jpa 按降序排序从结果集中获取第一行