ORA-00904:标识符无效 解决办法(Oracle字段名区分大小写的坑)
问题描述
我在使用jpa或者mybatis集成Oracle进行where查询的时候发现一直出现:
java.sql.SQLSyntaxErrorException: ORA-00904: “USER0_”.“PWD”: 标识符无效
下面是问题代码:
@Test
void test01(){
User user = userDao.findByPwd("ccat");
System.out.println("user = " + user);
}
再来看看我的dao层代码块和实体代码块
数据接口的设计如下图
原因分析:
在这里我们可以看到整体的代码逻辑是没有问题的,但是再看看数据表结构发现:pwd
字段为小写,其实PL自动生成的创建表的脚本中,表名和字段名都加了双引号。双引号在Oracle中表示区分大小写,Oracle是严格区分大小写的,未使用双引号时默认全部大写。可能很多人都会误认为oracle是不区分大小写的,原因