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

时间:2015-03-13 11:26:31

标签: spring jpa spring-data spring-data-jpa

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

4 个答案:

答案 0 :(得分:25)

您可以按如下方式实现:

dao.findAll(new Sort(Sort.Direction.DESC, "<colName>"));

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

findByOrderByIdAsc()

答案 1 :(得分:4)

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

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

实体

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

}

存储库

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

    @Override
    @Query
    public Iterable<User> findAll();
}

,或者

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

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

答案 2 :(得分:1)

请改用PagingAndSortingRepository。 有了这个,你可以添加一个查询参数?sort =,

存储库:

public interface UserRepository extends PagingAndSortingRepository<User, Long> {
  //no custom code needed
}

GET请求:

localhost:8080/users?sort=name,desc

答案 3 :(得分:-1)

如果您想将costom查询添加到findAll()jpa查询中,可以采用这种方式

在这里,我更改了默认订单

根据我的默认顺序,主键是id

但是现在我在这里设置id_order来更改默认顺序

模型类

@Entity
@Table(name = "category")
@NamedQuery(name = "Category.findAll", query="select u from Category u order by 
u.id_order")
public class Category {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
private String nameEn;
private String nameSi;
private String nameTa;
private Integer id_order;

存储库类

import com.model.Category;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.CrudRepository;

import java.util.List;

public interface CategoryRepository extends CrudRepository<Category, Integer> {

@Override
@Query
public Iterable<Category> findAll();