这是我的工作数据库设置:排序由相关特性
@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 ....' –