使用CriteriaQuery选择通用主键

Jep*_*ppz 5 java hibernate jpa criteriaquery

从Hibernate Criteria api迁移到CriteriaQuery时,我遇到了一个抽象类的通用DAO,该抽象类在公共字段上具有一个位置,但对其ID进行选择,即使每个类的ID完全不同。

旧的投影看起来像这样

criteria.setProjection(Projections.id());
Run Code Online (Sandbox Code Playgroud)

有没有办法使用CriteriaQuery以类似的方式做到这一点?

编辑:完整标准代码

DetachedCriteria detachedCriteria = DetachedCriteria.forClass(MyEntity.class);
detachedCriteria.add(Restrictions.in("accountID", accounts));
detachedCriteria.setProjection(Projections.id());

EntityManager em = ...;
Criteria criteria = detachedCriteria.getExecutableCriteria((Session) em.getDelegate());
List<Integer> list = criteria.list();
Run Code Online (Sandbox Code Playgroud)

Jep*_*ppz 3

我只是自己设法找到了它。

criteriaQuery.select(
    root.get(entityRoot.getModel().getDeclaredId(int.class))
);
Run Code Online (Sandbox Code Playgroud)