我知道与此相关的话题很多,但是我找不到解决问题的方法。我知道如果我在休眠状态下使用“ distinct”和“ order by”,则order by中的列必须位于select子句中。其他文章只是说该列必须处于选择状态,但是我还没有找到一个示例来实现此目的。
这是我的课程:
@Entity
@Table(name = "DANCE")
public class Dance implements Serializable {
@Id
private int tanzid;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "SID")
private School school;
@Basic
@Column(name = "titel")
private String titel;
(getter setter...)
我的查询(无效)
SELECT distinct d FROM Dance d order by d.school.schoolname
例如,如果我按标题排序,那么它正在工作。 我试图在选择子句中设置学校名称:
SELECT distinct d, d.school.schoolname FROM Dance d order by d.school.schoolname
但是随后休眠状态抱怨查询的返回类型不是来自“ Dance.class”类型。
如何按学校名称定单。
谢谢
答案 0 :(得分:0)
您将不得不针对一列选择不同的行。不幸的是,这不是sql标准的一部分,因此在jpql或hql中无法实现。您必须使用特定于供应商的语法和本机查询才能实现此目的。 Here是Postgres中的一个例子。