背景:一个数据库表,要求查询部分字段,并分页,使用Spring boot jpa
实现:
##实体类##
@Entity
@Table(name = "student")
public class Student {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
@NotNull
private Integer age;
@NotNull
private String name;
private String time_string;
private Date time_date;
repository层
public interface StudentRepository extends JpaRepository<Student,Integer>{
@Query("select age,name from Student ")
Page<Student> findByHa(Pageable pageable);
## controller层 ##
@RequestMapping(value = "ceshi")
public Page<Student> hah(){
Pageable pageable = new PageRequest(1, 2);
return studentRepository.findByHa(pageable);
}
结果:
{
“timestamp”: 1514372440758,
“status”: 500,
“error”: “Internal Server Error”,
“exception”: “org.springframework.dao.InvalidDataAccessApiUsageException”,
“message”: “Cannot create TypedQuery for query with more than one return using requested result type [java.lang.Long]; nested exception is java.lang.IllegalArgumentException: Cannot create TypedQuery for query with more than one return using requested result type [java.lang.Long]”,
“path”: “/ceshi”
}
- 查询全部字段就可以实现
修改查询语句
@Query("select s from Student s")
Page<Student> findByHa(Pageable pageable);
结果:
{
"content": [
{
"id": 3,
"age": 0,
"name": "Baby",
"time_string": "2017-11-22",
"time_date": "2017-11-22"
},
{
"id": 4,
"age": 0,
"name": "Baby",
"time_string": "2017-11-22",
"time_date": "2017-11-22"
}
],
"last": false,
"totalElements": 5,
"totalPages": 3,
"size": 2,
"number": 1,
"sort": null,
"first": false,
"numberOfElements": 2
}
原因查询好多博客,没有找到,欢迎大佬们留言指正