java.lang.IllegalStateException: 没有显式选择,无法确定隐式选择

lia*_* xu 3 jpa

下面是我的 jpa 代码。

    CriteriaBuilder cb = entityManager.getCriteriaBuilder();
    CriteriaQuery cq = cb.createQuery();
    Root e = cq.from(Student.class);
    cq.where(cb.greaterThan(e.get("id"), 3));
    Query query = entityManager.createQuery(cq);
    List<Student> students = query.getResultList();      
Run Code Online (Sandbox Code Playgroud)

我想得到所有id大于3的学生。谢谢。

小智 7

我想您必须定义将从表中选择的列。

CriteriaBuilder cb = entityManager.getCriteriaBuilder();
CriteriaQuery<Student> cq = cb.createQuery(Student.class);
Root<Student> root = cq.from(Student.class);

cq.where(cb.greaterThan(e.get("id"), 3));
cq.select(root); // Which columns will be selected? Presuming all.

List<Student> studentList = entityManager.createQuery(cq).getResultList(); 
Run Code Online (Sandbox Code Playgroud)