更改 Spring 数据 findAll() 方法的默认排序顺序
Change default sort order for Spring Data findAll() method
我正在使用 Spring Data JPA,我想知道是否可以更改 Spring Data findAll()
方法使用的实体的默认排序顺序?
您可以通过以下方式实现:
dao.findAll(new Sort(Sort.Direction.DESC, "colName"));
// or
dao.findAll(Sort.by("colName").descending());
实现相同的另一种方法。使用以下方法名称:
findByOrderByIdAsc()
您应该可以通过以下任一方式执行此操作:
在 spring-data 1.5+ 中,重写接口中的 findAll() 方法,添加 @Query 注释并在实体 class 中创建命名查询,例如,如下所示:
实体
@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();
}
或者,
通过创建自定义存储库实现:
改为使用 PagingAndSortingRepository。
有了它,您可以添加查询参数 ?sort=,
存储库:
public interface UserRepository extends PagingAndSortingRepository<User, Long> {
//no custom code needed
}
GET 请求:
localhost:8080/users?sort=name,desc
如果你想将 costom 查询添加到 findAll() jpa 查询,你可以这样做
这里我更改了我的默认顺序
根据我的默认顺序是主键是id
但现在我在这里设置 id_order 来更改我的默认顺序
型号class
@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;
存储库class
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();
我正在使用 Spring Data JPA,我想知道是否可以更改 Spring Data findAll()
方法使用的实体的默认排序顺序?
您可以通过以下方式实现:
dao.findAll(new Sort(Sort.Direction.DESC, "colName"));
// or
dao.findAll(Sort.by("colName").descending());
实现相同的另一种方法。使用以下方法名称:
findByOrderByIdAsc()
您应该可以通过以下任一方式执行此操作:
在 spring-data 1.5+ 中,重写接口中的 findAll() 方法,添加 @Query 注释并在实体 class 中创建命名查询,例如,如下所示:
实体
@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();
}
或者,
通过创建自定义存储库实现:
改为使用 PagingAndSortingRepository。 有了它,您可以添加查询参数 ?sort=,
存储库:
public interface UserRepository extends PagingAndSortingRepository<User, Long> {
//no custom code needed
}
GET 请求:
localhost:8080/users?sort=name,desc
如果你想将 costom 查询添加到 findAll() jpa 查询,你可以这样做
这里我更改了我的默认顺序
根据我的默认顺序是主键是id
但现在我在这里设置 id_order 来更改我的默认顺序
型号class
@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;
存储库class
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();