我正在使用Spring Data JPA,想知道是否可以更改实体在Spring Data的findAll()
方法中的默认排序顺序?
我正在使用Spring Data JPA,想知道是否可以更改实体在Spring Data的findAll()
方法中的默认排序顺序?
dao.findAll(new Sort(Sort.Direction.DESC, "colName"));
// or
dao.findAll(Sort.by("colName").descending());
另一种实现相同效果的方法。使用以下方法名称:
findByOrderByIdAsc()
findByOrderByIdAsc()
。 - Mithun您可以通过以下两种方式之一来完成此操作:
在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{
}
仓库
public interface UserRepository extends ... <User, Long> {
@Override
@Query
public Iterable<User> findAll();
}
public interface UserRepository extends PagingAndSortingRepository<User, Long> {
//no custom code needed
}
GET请求:
localhost:8080/users?sort=name,desc
@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();
SimpleJpaRepository
并覆盖findAll
方法。请参阅向所有存储库添加自定义行为部分。您也可以使用此方法来覆盖默认行为。 - M. Deinum