美文网首页我爱编程
Spring Boot使用问题汇总

Spring Boot使用问题汇总

作者: 浩仔_Boy | 来源:发表于2018-04-13 13:52 被阅读117次

1. No identifier specified for entity
没有加上@Id注解,而且要正确导包:
正确:

import javax.persistence.*;

错误:

import org.springframework.data.annotation.Id;

2. 使用分页时候,could not extract ResultSet;
报ORA-00933: SQL 命令未正确结束一直报这个错误,
看打印的sql语句是:

SELECT id FROM table OffSET 1 FETCH FIRST 5 ROWS ONLY ;

Spring Boot的版本是2.0.1

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.1.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
</parent>

jpa的版本是

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
            <version>1.5.6.RELEASE</version>
</dependency>

怀疑是不是版本不统一导致的,将jpa换成2.0.1无果。将spring boot换成1.5.6成功拿到分页数据。
奇怪啊~~~~~~~~~~~~~
又看了下打印出来的sql语句,发现了问题所在。我的oracle是11g,而OffSET 是在12c版本才开始支持。恶心了一天,终于找到问题,终于可以开心的打王者了。

3.使用原生sql,APP端解析成LinkTreeMap而非实体类

image.png
解决方案:如图,不要用Object去存放数据,使用JSONObject即可。

4.简单的sql语句,报错ORA-00911: 无效字符。甚是奇怪。执行语句如下:

  /**
     * 根据用户id获取用户手势密码
     * @param userId
     * @return
     */
    public Object getGesturePasswordById(String userId){
        String sql = "select GESTURE_PASSWORD FROM AS_USER WHERE user_id = '"+userId+"' OR user_name = '"+userId+"';";
        Query query= entityManager.createNativeQuery(sql);
        List<Object> list = query.getResultList();
        if (list == null || list.size() == 0) {
            return null;
        }
        return list.get(0);
    }

后来经过调试发现sql语句尾部的;不能要,将sql改为

String sql = "select GESTURE_PASSWORD FROM AS_USER WHERE user_id = '"+userId+"' OR user_name = '"+userId+"'";

即可。

相关文章

网友评论

    本文标题:Spring Boot使用问题汇总

    本文链接:https://www.haomeiwen.com/subject/csuckftx.html