在JPA2标准中选择等效的....

aba*_*gat 4 jpa criteria criteria-api jpa-2.0

有没有办法使用JPA2标准API执行以下查询?

select a from b where a in (1, 2, 3, 4)
Run Code Online (Sandbox Code Playgroud)

有一种方法可以使用普通的Hibernate来做到这一点,但我们在JPA2中找不到类似的东西.

Kri*_*bic 7

是JPA 2 Critera支持从实体返回特定字段并使用包含in子句的where 子句.我在下面列出了一个示例,它采用JPQL并将其转换为类似的JPA 2 Criteria选项.

JPQL:

select b.a from B b where a in (1, 2, 3, 4)
Run Code Online (Sandbox Code Playgroud)

标准:

CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
// assuming a is an Integer  
// if returning multiple fields, look into using a Tuple 
//    or specifying the return type as an Object or Object[]
CriteriaQuery<Integer.class> query = criteriaBuilder.createQuery(Integer.class);
Root<B.class> from = query.from(Bean.class);
query.select(from.get("a"))
     .where(from.get("a").in(1, 2, 3, 4));

// create query and execute...
...  
Run Code Online (Sandbox Code Playgroud)

以下是一些链接,提供了一些使用的附加示例in:

希望这可以帮助!