【发布时间】:2021-09-10 15:47:59
【问题描述】:
在 XyzEntity 用户字段中包含空值和非空值
(这里root.get(XyzEntity_.user)可以为null)
代码 1:
criteriaQuery.select(criteriaBuilder.construct(XyzStatusDTO.class, root.get(XyzEntity_.ID),
root.get(XyzEntity_.user).get(UserEntity_.ID),
root.get(XyzEntity_.user).get(UserEntity_.EMAIL)
));
代码 2:
criteriaQuery.select(criteriaBuilder.construct(XyzStatusDTO.class, root.get(XyzEntity_.ID),
root.get(XyzEntity_.user).get(UserEntity_.ID)
));
代码 3:
criteriaQuery.select(criteriaBuilder.construct(XyzStatusDTO.class, root.get(XyzEntity_.ID)
));
代码 1 返回 12 条记录(仅当用户不为空时),而代码 2 和代码 3 返回 300 条结果(包括空用户)。
任何建议我可以在哪里放置条件语句,例如用户是否为空或非空)。因此,如果用户为空,则值 id user Id 和 email 将为空,而不是跳过结果。
【问题讨论】:
标签: hibernate jpa spring-data-jpa hibernate-criteria criteria-api