【发布时间】:2018-08-21 13:25:11
【问题描述】:
所以我有一个名为“用户”的表,其字段为
- 用户ID
- 用户名
- supervisorId
我想获取特定用户的主管的用户名。
CriteriaBuilder criteriaBuilder = em.getCriteriaBuilder();
CriteriaQuery<User> criteriaQuery = criteriaBuilder.createQuery(User.class);
Root<User> rootUser = criteriaQuery.from(User.class);
List<Predicate> predList = new ArrayList<Predicate>();
Join<User, User> selfJoin = rootUser.join("userId", JoinType.LEFT); //not sure about this line
predList.add(criteriaBuilder.equal(selfJoin.<String>get("userId"), supervisorId)); //supervisorId is the id of the supervisor that I want to find
TypedQuery<User> typedQuery = em.createQuery(criteriaQuery);
List<User> resultList = typedQuery.getResultList();
现在除了这个 supervisorId,我还有很多其他条件。所以我必须使用相同的条件查询。
谢谢。
【问题讨论】:
标签: java jpa orm criteria-api self-join