更改Spring Data findAll()方法的默认排序顺序

Mar*_*ijk 18 spring jpa spring-data spring-data-jpa

我正在使用Spring Data JPA,我想知道是否可以更改Spring Data findAll()方法使用的实体的默认排序顺序?

Mit*_*hun 28

您可以按如下方式实现此目的:

dao.findAll(new Sort(Sort.Direction.DESC, "colName"));
// or
dao.findAll(Sort.by("colName").descending());
Run Code Online (Sandbox Code Playgroud)

实现同样的另一种方式.使用以下方法名称:

findByOrderByIdAsc()
Run Code Online (Sandbox Code Playgroud)

  • 它只做他需要的单一方法。 (2认同)

Ala*_*Hay 6

您应该可以通过以下任一方式执行此操作:

在 spring-data 1.5+ 中,覆盖接口中的 findAll() 方法,添加 @Query 注释并在实体类中创建命名查询,例如,如下所示:

实体

@Entity
@NamedQuery(name = "User.findAll", query="select u from User u order by u.address.town")
public class User{

}
Run Code Online (Sandbox Code Playgroud)

存储库

public interface UserRepository extends ... <User, Long> {

    @Override
    @Query
    public Iterable<User> findAll();
}
Run Code Online (Sandbox Code Playgroud)

或者,

通过创建自定义存储库实现:

http://docs.spring.io/spring-data/jpa/docs/current/reference/html/#repositories.custom-implementations