【发布时间】:2012-09-24 17:22:24
【问题描述】:
我正在尝试使用 JPA Criteria API 编写以下 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);
我不知道如何将它们组合在一起。
最好的问候, 巴特克
【问题讨论】:
-
只是一个意见:我喜欢 JPA,我以前使用过 Hibernate 的
Criteria,但我一直远离 JPACriteria。它的复杂性没有给我带来任何附加值。 -
好吧,我同意,这太复杂了。
标签: java hibernate jpa criteria-api