为了账号安全,请及时绑定邮箱和手机立即绑定

CriteriaBuilder Query 在使用 fetch 时中断,但不使用

CriteriaBuilder Query 在使用 fetch 时中断,但不使用

青春有我 2021-09-15 16:12:44
我有一种方法可以快速获取一个 Element。为此,我想使用 id。如果我使用 (root.fetch) 加载eager,则此查询会导致空结果。但没有它,它的工作原理!为什么?@Overridepublic Request getRequestById(int id) {    CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();    CriteriaQuery<Request> criteriaQuery = criteriaBuilder.createQuery(Request.class);    Root<Request> root = criteriaQuery.from(Request.class);    Predicate equals = criteriaBuilder.equal(root.get("id"), id);    root.fetch("products",JoinType.INNER);    root.fetch("productiveShifts",JoinType.INNER);    criteriaQuery.where(equals);    return entityManager.createQuery(criteriaQuery.select(root)).getResultList().get(0);}
查看完整描述

1 回答

?
慕容3067478

TA贡献1773条经验 获得超3个赞

这很简单 - 没有productsproductiveShiftsroot空结果集相关联。请记住,您在那里使用 INNER JOIN,因此关联必须存在。

另一方面,如果您使用 Left Join,它可能会按预期工作。


查看完整回答
反对 回复 2021-09-15
  • 1 回答
  • 0 关注
  • 170 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号