使用 Jpa 分页报个错:
Cannot use native queries with dynamic sorting and/or pagination in method public abstract org.springframework.data.domain.Page
Jpa 的原生 SQL 对命名没有严格的要求,如下示例:package com.lmlphp.test;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.data.repository.query.Param;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
public interface TestRepository extends JpaRepository {
@Query(
value="select * from table_name where status=:status \n#pageable\n",
countQuery = "select count(*) from table_name where status=:status",
nativeQuery=true)
Page findByStatus(@Param("status") int status, Pageable pageable);
}
Entity 示例:package com.lmlphp.test;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import java.io.Serializable;
@Entity
@Table(name="table_name")
public class Test implements Serializable{
@Id
@GeneratedValue
private Long id;
private int status;
public Long getId(){
return id;
}
public int getStatus(){
return status;
}
public Test(){}
public Test(int status){
this.status = status;
}
public String toString(){
return String.format("id=%s, status='%s'", id, status);
}
}
希望能帮助不会使用 Jpa 原生 SQL 分页的同学。