JPACriteriaAPIを使用して次のSQLクエリを書き込もうとしています
SELECT * FROM roles WHERE roles.name IN (SELECT users.role FROM users where name="somename");
そしてそれは私にとって少し大変です(私はCriteria APIの学習を始めたばかりです)。私はこのようなものを手に入れました:
CriteriaBuilder criteriaBuilder = manager.getCriteriaBuilder();
CriteriaQuery<RoleEntity> criteriaQuery = criteriaBuilder.createQuery(RoleEntity.class);
Root<RoleEntity> root = criteriaQuery.from(RoleEntity.class);
Subquery<UserEntity> subquery = criteriaQuery.subquery(UserEntity.class);
Root<UserEntity> subqueryRoot = subquery.from(UserEntity.class);
subquery.where(criteriaBuilder.equal(subqueryRoot.get(UserEntity_.username), username));
subquery.select(subqueryRoot);
そして、私はそれをすべてまとめる方法がわかりません。
よろしく、Bartek