hibernate异常:could not extract ResultSet

来源:互联网 发布:mac os 10.12 iso下载 编辑:程序博客网 时间:2024/05/19 20:43

环境说明

SSH:Struts2 + Spring4 + hinernate5
数据库: Oracle12c

具体问题

实现一个登陆功能时,报错如下:
这里写图片描述

这里写图片描述

解决方案

错误显示表或者视图不存在,应该是hibernate映射文件出现问题,查看hibernate.hbm.xml如下

<hibernate-mapping>    <class name="edu.fjnu.logistics.domain.User" table="t_user">        <id name="id" type="java.lang.Integer">            <column name="id" length="32" />            <generator class="sequence">                <param name="sequence">SEQ_USER</param>            </generator>        </id>后面省略...

其中class的属性table=”t_user”,使用SQL Devloper查看数据库名称,猜想可能是双引号在作怪,如下
这里写图片描述

于是把双引号去除,数据库名称变为了大写,同时修改hibernate.hbm.xml的class属性table=”T_USER”,重启服务器,发现还是报错,但是错误已经改变了,变为

java.sql.SQLSyntaxErrorException: ORA-00904: “USER0_”.”PASSWORD”: 标识符无效

还是同样原因,oracle字段名称如下
这里写图片描述

这里写图片描述

将引号去掉,重启服务器即可成功实现登陆功能。

总结

数据库的建表语句是根据powerdesigner导出的,而DBMS最高只能选择Oracle11g的并没有Oracle12c的,具体的建表语句里面加了引号,如下

/*==============================================================*//* DBMS name:      ORACLE Version 11g                           *//* Created on:     2017/11/14 14:45:19                          *//*==============================================================*/drop table "t_user" cascade constraints;/*==============================================================*//* Table: "t_user"                                              *//*==============================================================*/create table "t_user" (   "id"                 VARCHAR2(32)         not null,   "username"           VARCHAR2(20)         not null,   "password"           VARCHAR2(32)         not null,   "salary"             BINARY_DOUBLE,   "birthday"           DATE,   "gender"             VARCHAR2(10),   "station"            VARCHAR2(40),   "telephone"          VARCHAR2(11),   "remark"             VARCHAR2(255),   constraint PK_T_USER primary key ("id"));

数据库中引号的细微差别导致的错误,真心是个坑。

阅读全文
0 0