【发布时间】:2018-01-07 19:13:50
【问题描述】:
这是我的工作数据库设置:
@Entity
class Foo {
@Id
@Column(name = "ID")
@GeneratedValue(strategy= GenerationType.IDENTITY)
private Long id;
@OneToMany(fetch = FetchType.LAZY)
@JoinColumn(name = "FOO_ID")
private Set<Bar> bars;
//...
}
@Entity
class Bar {
@Id
@Column(name = "ID")
@GeneratedValue(strategy= GenerationType.IDENTITY)
private Long id;
@Column(name = "STATUS")
private String status;
//...
}
FooRepository 扩展 CrudRepository {
@Query("select distinct f from Foo f left join f.bars b where b.status = :status ")
public Page<Bar> findByBarStatus(@Param("status") BarStatus status, Pageable pageable);
}
我希望能够按Bar.status 对该查询进行排序,这是我尝试更改查询的方式:
@Query("select distinct f from Foo f left join f.bars b where b.status = :status order by b.status desc")
public Set<Bar> findByBarStatus(@Param("status") BarStatus status);
然而这会导致 sql 语法错误:
org.h2.jdbc.JdbcSQLException: Order by expression "BARS1_.STATUS" must be in the result list in this case;
【问题讨论】:
-
select distinct f, b.status ....
标签: java sql spring jpa spring-data-jpa