Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java jpa2 CriteriaBuilder order by“order by表达式必须出现在选择列表中”_Java_Hibernate_Sql Order By_Jpa 2.0_Criteriaquery - Fatal编程技术网

Java jpa2 CriteriaBuilder order by“order by表达式必须出现在选择列表中”

Java jpa2 CriteriaBuilder order by“order by表达式必须出现在选择列表中”,java,hibernate,sql-order-by,jpa-2.0,criteriaquery,Java,Hibernate,Sql Order By,Jpa 2.0,Criteriaquery,我正在使用CriteriaBuilder编写一个查询,但无法添加order by子句,因为它与消息order by表达式一起引发的错误必须出现在选择列表中这是我的实体 public class A{ Integer aId; @ManyToOne @JoinColumn(name = "bId", nullable = false) B classB; //setter and getter. } public class B{ Integer bId;

我正在使用CriteriaBuilder编写一个查询,但无法添加order by子句,因为它与消息order by表达式一起引发的错误必须出现在选择列表中这是我的实体

public class A{
  Integer aId;
  @ManyToOne
  @JoinColumn(name = "bId", nullable = false)
  B       classB;
  //setter and getter.
}

public class B{
    Integer bId;
    String name;
    //setter and getter.

}
我的问题是这样的

CriteriaBuilder cb = super.getEntityManager().getCriteriaBuilder();
        CriteriaQuery<A> cq = cb.createQuery(A.class);
        Root<A> aRoot = cq.from(A.class);
        Join<A, B> joinB = aRoot.join("b", JoinType.INNER);

        cq.distinct( true );

        cq.orderBy( cb.asc( joinB.get("name") ));

        return super.getEntityManager().createQuery(cq).getResultList();

如你所见。B它不在select子句中。那么,如何添加B?

是一个示例,它应该如何工作。感谢您的帮助,最后的解决方案是添加一个分组并删除不同的。谢谢您的问题和评论。尽管我认为上述评论也应该作为问题的答案发布。它今天似乎仍然有效。
select
    distinct a0_.aId as aId,
    a0_.bId as bId,
from
    a a0_ 
inner join
    b b2_ 
        on a0_.aId=b2_.bId 
order by
    b2_.name asc //this is where the error comes