Java jpa2 CriteriaBuilder order by“order by表达式必须出现在选择列表中”
我正在使用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;
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