代码已经放到github,test测试中的demo2对应的是sql方式,demo3对应的是hql方式,demo1是分页查询,我另一篇文章会讲到{% post_link 分页查询 分页查询 %}
github地址
前言
我们平时使用jpa查询时,有两种情况,一种是查询全部字段,另一种是查询部分字段,当我们按通常的sql语句写法查询部分字段时,会出现jpa无法自动解析类型的情况,例如这类报错
org.springframework.dao.InvalidDataAccessResourceUsageException: could not execute query; SQL [ SELECT sa.name FROM student sa ]; nested exception is org.hibernate.exception.SQLGrammarException: could not execute query
解决方案
针对hql和sql分别有两种解决方案
一.
hql情况下,我们可以用这种方式来解决,有必要注意的一点是,Student里面一定要有相应的构造类
//TODO 查询部分字段的demo-hql
@Query(value = " SELECT new Student(s.name) FROM Student s")
List<Student> temp03();
二.
在sql情况下,我们可以用这种方式解决,首先我们将查出来的数据领jpa解析为map,然后通过我们自己写的map转实体类方法来解决
//TODO 查询部分字段的demo-sql
@Query(value = " SELECT sa.name FROM student sa ",
nativeQuery = true)
List<