Spring JPA发现与order by不同

时间:2018-05-17 07:16:00

标签: postgresql hibernate spring-data spring-data-jpa

我要选择看起来像:

findDistinctByPatientOrderByVisits_DateDesc(patient: Patient, page: Pageable): Page<Treatment>

治疗是一个包含患者及其就诊的表格,可以更多地进行单一治疗。 我需要做的唯一原因只有OrderBy我正在接受重复治疗。

此实体包含字段:

@Entity
class Treatment(
    @OneToMany(cascade = arrayOf(CascadeType.ALL), mappedBy = "Instance")
    var visits: MutableList<Visit> = mutableListOf()
    @ManyToOne
    val patient: Patient
)
@Entity
class Visit(
    var date: LocalDateTime = LocalDateTime.MAX,

)

但我收到错误:

  

SELECT DISTINCT,ORDER BY表达式必须出现在选择列表

1 个答案:

答案 0 :(得分:0)

该错误意味着您尝试按查询的SELECT部分​​中不存在的字段进行排序。所以它不能按日期排序。

我认为您的问题属于FetchType,默认情况下应为LAZY,因此它不会检索日期变量,也无法按该值排序。

您可以尝试将FetchType更改为EAGER,也可以编写类似

的查询

@Query(value =&#34; SELECT t,v FROM Treatment t JOIN t.visits v ORDER BY v.date&#34;)

否则你可以使用标准api