zoukankan      html  css  js  c++  java
  • 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""]}

    本文来自博客园,作者:编程狸,转载请注明原文链接:https://www.cnblogs.com/ping-pong/p/9897997.html

  • 相关阅读:
    10. 正则表达式匹配
    5. 最长回文子串
    板子总结
    2020: 学生查询
    解决apt-get出错
    03如何计算算法的复杂度
    ad如何从PCB中导出元件封装库
    调车遇到的问题及解决办法
    java报错与解决方法总结
    SWD下载k60
  • 原文地址:https://www.cnblogs.com/ping-pong/p/9897997.html
Copyright © 2011-2022 走看看