有没有一种简单的方法可以使用条件查询选择实体的ID?

时间:2015-03-15 19:55:10

标签: java-ee jpa ejb jpql

JPQL使这种变化变得非常简单:

Select o from Orders as o where....

Select o.id from Orders as o where....

但在Criteria Query中:

CriteriaBuilder builder = kem.getCriteriaBuilder();
CriteriaQuery<Orders> query = builder.createQuery(Orders.class);
Root<Order> orders= query.from(Orders.class);
query.select(orders);
....

看起来选择项是由builder.createQuery(Order.class)定义的,没有任何灵活性。

我知道我们可以使用Tuple.class,但除了比较复杂的查询还有更好的方法来获得额外的id(只有一个字段)吗?没有这样的特征标准查询becomase非常缺乏灵活性。

1 个答案:

答案 0 :(得分:4)

您必须使用JPA Metamodel API

CriteriaBuilder builder = entityManager.getCriteriaBuilder();
CriteriaQuery<Long> query = builder.createQuery(String.class);
Root<Order> root = query.from(Orders.class);
query.select(root.get(Orders_.id));

此处,Orders_Orders的元模型类。