【问题标题】:Hibernate Select distinct with order by another tableHibernate Select distinct with order by another table
【发布时间】: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 上进行内部连接,它就不起作用

标签: java hibernate


【解决方案1】:

您必须针对一列选择不同的行。不幸的是,这不是 sql 标准的一部分,因此在 jpql 或 hql 中无法做到这一点。您必须使用供应商特定的语法和本机查询来实现这一点。 Here 是 postgres 中的一个示例。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-10
    相关资源
    最近更新 更多