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""]}

 

以上是关于hinernate使用原生SQL处理的主要内容,如果未能解决你的问题,请参考以下文章

原生js禁止页面滚动

Hibernat 原生SQL运行结果集处理方法

数据分析画图,使用原生sql查询数据

缺少 SQL SERVER 2014 代码片段

以下代码片段是不是容易受到 Rails 5 中 SQL 注入的影响?

使用实体框架迁移时 SQL Server 连接抛出异常 - 添加代码片段