hinernate使用原生SQL处理
Posted babyhanggege
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hinernate使用原生SQL处理相关的知识,希望对你有一定的参考价值。
如下的事例只是为了说明意图,工作中业务不会如此简单。
一、数据库的字段
STUDENT_ID
STUDENT_NAME
STUDENT_AGE
二、实体类
// 主键 uuid @Id @Column(name = "STUDENT_ID", length = 100, nullable = false) @Size(max = 100, message = "{length.max}") @GeneratedValue(generator = "system-uuid") @GenericGenerator(name = "system-uuid", strategy = "uuid") private String studentId; //学生姓名 @Column(name = "STUDENT_NAME", length = 19) @Size(max = 19, message = "{length.max}") private String studentName; //年龄 @Column(name = "STUDENT_AGE" , length = 3) @Size(max = 3, message = "{length.max}") private Int studentAge;
三、因为某种特殊的原因,我必须使用hibernate结合原生SQL进行数据的查询操作。
四、封装结果的VO类
private String studentId; private String studentName; private String studentAge;
五、利用hibernate进行原生SQL查询时,必须保证查询出来的属性名称与封装结果的VO类中成员的属性名称一致。
六、原生SQL的书写
请注意此处 " 的用法 select a.student_id as "studentId" a.student_name as "studentName" from student a where a.student_age = ‘18‘
七、前台的页面需要按age字段排序,且这个字段必须由前端传递
后台看到的sql如下
select * from ( select a.STUDENT_ID as "studentId", a.STUDENT_NAME as "studentName" from student a where a.STUDENT_AGE = ‘18‘ ORDER BY studentAge ASC, )
上面的SQL是会报错的,ORA-00904: "STUDENTAGE": 标识符无效
这时,你需要告诉你们的前端传递 studentAge时,应该加一对二""
Postman软件的Body应该这样写
"orderby":["+"studentAge""]}