hibernate异常:could not extract ResultSet

环境说明

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

具体问题

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

hibernate异常:could not extract ResultSet_第1张图片

解决方案

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


    "edu.fjnu.logistics.domain.User" table="t_user">
        "id" type="java.lang.Integer">
            "id" length="32" />
            "sequence">
                "sequence">SEQ_USER
            
        
后面省略...

其中class的属性table=”t_user”,使用SQL Devloper查看数据库名称,猜想可能是双引号在作怪,如下
hibernate异常:could not extract ResultSet_第2张图片

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

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

还是同样原因,oracle字段名称如下
hibernate异常:could not extract ResultSet_第3张图片

hibernate异常:could not extract ResultSet_第4张图片

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

总结

数据库的建表语句是根据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")
);

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

你可能感兴趣的:(Java,oracle)