【问题标题】:Criteria api - illegalStateException标准 api - 非法状态异常
【发布时间】:2018-11-28 01:59:03
【问题描述】:

我使用 Criteria Api 编写了以下代码:

CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();

CriteriaQuery<Entity> criteriaQuery = criteriaBuilder.createQuery(Entity.class);
Root<Entity> root = criteriaQuery.from(Entity.class);
criteriaQuery.select(root);

CriteriaQuery<Long> countQuery = criteriaBuilder.createQuery(Long.class);
countQuery.select(criteriaBuilder.count(root));

Long countOfRows = entityManager.createQuery(countQuery).getSingleResult();

结果我得到一个异常:

java.lang.IllegalStateException:没有条件查询根是 指定

getSingleResult 方法抛出异常(代码的最后一行)。谢谢你的帮助!

【问题讨论】:

    标签: java hibernate criteria-api


    【解决方案1】:

    强制countQuery添加root后生效:

    ((QueryStructure)((CriteriaQueryImpl)countQuery).queryStructure).roots.add(root)
    

    【讨论】:

      猜你喜欢
      • 2013-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-10
      • 1970-01-01
      • 2017-04-05
      相关资源
      最近更新 更多