在mybatis中使用Oracle数据库如何解决Cause: java.sql.SQLSyntaxErrorException: ORA-00904: “xxxx“: 标识符无效的问题?

问题阐述:解决方法1.选确认你SQL语句中的字段名称和实体类中的对象名称一一对应(不多概述),2.如果您的SQL语句中的字段名使用“双引号”包裹起来了,那就把双引号去掉重新创建表即可,详细过程如下:

对于这个问题,网上有很多种的解决方案(基本就是 你的SQL里面的字段名和java中的实体类的对象名称不一样)我反复检查发现就是一模一样的,最后发现就是 SQL创建表中字段的SQL语句的问题,就是创建SQL表的时候,字段名称 不要带 “双引号”(不要把字段名称用双引号包裹起来)

就像这样

 SQL语句中字段名称被双引号包裹

CREATE TABLE  logon_logs (
  "id" VARCHAR2(50 BYTE) NOT NULL ,  --id
  "time" DATE ,                 --时间
  "user_name" VARCHAR2(50 BYTE), --用户名称
  "login_results" NUMBER(6) ,  --登录结果
  "ip" VARCHAR2(50 BYTE) ,    -- IP地址
  "address" VARCHAR2(50 BYTE) , --地址
  "remark_outcome" VARCHAR2(50 BYTE)    --登录结果
);

java实体类:(我这里用了mybatis 规定了 驼峰命名)

public class LogonLogs {
	/**
	 * id编号
	 */
	private String id;
	/**
	 * 时间
	 */
	private Date time;
	/**
	 * 用户名称
	 */
	private String userName;
	/**
	 * 登录结果
	 */
	private Integer loginResults;
	/**
	 * ip地址
	 */
	private String ip;
	/**
	 * 地址
	 */
	private String address;
	/**
	 * 备注
	 */
	private String remarkOutcome;
}

这里可以看到,我们的对象名称和SQL语句中的字段名称 一模一样,但是还是报错:

修改方法

我们把SQL的创建表的语句改成这样

SQL创建语句中的 字段名 不要用 “双引号”包裹

CREATE TABLE  logon_logs (
  id VARCHAR2(50 BYTE) NOT NULL ,  --id
  time DATE ,                 --时间
  user_name VARCHAR2(50 BYTE), --用户名称
  login_results NUMBER(6) ,  --登录结果
  ip VARCHAR2(50 BYTE) ,    -- IP地址
  address VARCHAR2(50 BYTE) , --地址
  remark_outcome VARCHAR2(50 BYTE)    --登录结果
);

 改成这个样子,我们在java中发送请求,数据就出来啦,也不会报错了!

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值