jpa高级查询如何写join left on?

what7yousay
  • 577
select r.role_id,p.duty_id from s_duty_auth p
                    left join s_role r on r.role_id = p.role_id
                    
                    where.......

如上面所示:这是一个子查询,那么该如何写呢这个??

以下是我尝试的,但是好乱,不能成功,如何写??

Subquery<DutyAuth> subquery=query.subquery(DutyAuth.class);
                    
                    Root<DutyAuth> subroot=subquery.from(DutyAuth.class);
                    
                    subquery.select(subroot.get("roleId"));
                    
                    SetJoin<DutyAuth, Role> setJoin=subroot.join(subroot.getModel().getSet("roleId",Role.class),JoinType.LEFT);
                    
                    Predicate predicate=cb.equal(setJoin.get("roldId"), subroot.get("roleId"));
                    
                    subquery.where(predicate);
                    
                    Predicate predicate2=cb.exists(subquery);
                    list.add(predicate2);
回复
阅读 16.6k
1 个回答
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏