【发布时间】:2019-03-11 09:28:53
【问题描述】:
我知道有很多关于此的主题,但我找不到解决我的问题的方法。我知道如果我在休眠中使用“distinct”和“order by”,order by 中的列必须在 select 子句中。其他文章只是说该列必须在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 子句中设置学校名称:
SELECT distinct d, d.school.schoolname FROM Dance d order by d.school.schoolname
但是hibernate抱怨查询的返回类型不是来自类型“Dance.class”
如何实现按学校名称排序。
谢谢
【问题讨论】:
-
你使用@ManyToOne 意味着有更多的桌子舞蹈和学校。当您按标题订购时,它起作用了,因为标题在舞桌上。如果学校名称不在舞蹈表中,您必须加入两个表舞蹈和学校,然后按学校名称排序。
-
@SHAHAKASH 另外,如果我在 table school 上进行内部连接,它就不起作用