本博客属原创,转载请注明出处

问题描述:

环境:

spring data jpa版本4.0.3

informix驱动版本3.50.JC9

程序结构

jpa配置文件对应的jdbc配置

dao层继承jpaRepository

TfaAlgRec实体类,以id属性为例,此时@Column(name="Id")

测试类:

此时会报

紧接着用jdbc的方式将tfa_alg_rec这张表的列名打印出来

console输出:

可以看到数据库表中的id是小写,而实体中用@Column注解配置的是Id。于是乎,把上面@Column注解配置改成id。此时运行却没有报异常。

但众所周知,informix数据库执行sql时是不区分大小写的,所以这很矛盾。上网查资料,原来是hibernate连接informix的时候有个bug,网址:

https://hibernate.atlassian.net/browse/HBX-1126

解决方式:

在jpa配置文件中将url中DELIMIDENT=y这个配置去掉,如下

<property name="url" value="jdbc:informix-sqli://127.0.0.1:8001/nmosdb:INFORMIXSERVER=nrmsserver;informixserver=nrmsserver;newcodeset=gbk,cp1252,819;" />

之后再把实体中id属性配置的列名改回成@Column(name="Id")。运行单元测试,成功

分析原因可能是:

首先简单介绍下DELIMIDENT这个属性,它是一个定界符,当设置了 DELIMIDENT 时,SQL 解析器将以单引号定界的字符串解释为字符串文字,而将双引号 ( " ) 定界的字符串解释为 SQL 标识。在本例中,url加上DELIMIDENT=y配置时,程序后台可能在执行sql时,将列名加上双引号如: select "Id" from tfa_alg_rec,这样的话数据库会去找列名为"Id"的列,显然没有;如果去掉这个配置,执行的sql就是select Id from tfa_alg_rec,这里列名虽叫Id,但不区分大小写,数据库会自动配置id这个列,这样就ok了

springdatajpa使用informix数据库出现no such column 异常的问题的更多相关文章

  1. 为Informix数据库开启事务

    1.首先在Informix数据库安装根目录的etc文件夹下找到名为ONCONFIG.on_xxxx的配置文件: 2.打开ONCONFIG.on_xxxx文件,在第409行的位置找到TAPEDEV \\ ...

  2. INFORMIX数据库常用命令

    INFORMIX数据库常用命令 一.onstat命令集 1.onstat  - 说明:查看数据库当前的状态 用法:onstat  - 2.onstat  -c 说明:查看数据库的配置文件 用法:ons ...

  3. ODBC方式连接Informix数据库

    公司某个报表系统使用Informix数据库,在谋划使用Perl语言写数据采集程序后,花费了很多时间建立Perl访问Informix连接.恰巧Windows下ActivePerl的CPAN中又没有DBD ...

  4. GoldenGate抽取Informix数据库安装及配置

    GoldenGate抽取Informix数据库安装及配置 本次测试架构 l  在中间机上安装informix csdk4.10版本,并编译配置unixODBC; l  在中间机上安装ogg for I ...

  5. informix数据库知识积累

    一.嵌套查询 informix子查询:嵌套查询(1)select first 20 * from (select first 40 * from hlrquery_log order by id de ...

  6. C#连接Informix数据库

    最近在工作中遇到了需要连接Informix数据库的问题,在通过研究后发现了可以通过多种方式实现,我选择的是通过IBM Informix .NET Provider.该方式需要引用IBM.Data.In ...

  7. shell 脚本操作informix数据库

    shell 脚本操作informix数据库的简单模板: functionName(){ dbaccess << ! database 库名; sql语句; ! } 栗子1:更新数据 fun ...

  8. informix数据库分页

    需求描述 当查询结果返回大量数据情况下,比如报表查询.需要按一定条件排序提供分页呈现数据. INFORMIX实现方案:Informix 数据库提供了非常便捷.高效的SQL. SELECT SKIP M ...

  9. 用T-SQL命令附加数据库时,出现如下异常信息

    用T-SQL命令附加数据库时,出现如下异常信息: 无法打开物理文件 XXX.mdf".操作系统错误 5:"5(拒绝访问.)". (Microsoft SQL Server ...

随机推荐

  1. webpack command not found 的意外的坑 - 原因是从node开始

    写给自己做个记录: 弄了半天 执行了下面操作 npm install webpack -g 因为小白不懂原理,所以执行了好遍,结果还是如题, webpack command not found 网上搜 ...

  2. Vue学习之路第二十篇:Vue生命周期函数-组件创建期间的4个钩子函数

    1.每个 Vue 实例在被创建时都要经过一系列的初始化过程——例如,需要设置数据监听.编译模板.将实例挂载到 DOM 并在数据变化时更新 DOM 等.同时在这个过程中也会运行一些叫做生命周期钩子的函数 ...

  3. 【JavaScript游戏开发】使用HTML5+Canvas+JavaScript 封装的一个超级马里奥游戏(包含源码)

    这个游戏基本上是建立在JavaScript模块化的开发基础上进行封装的,对游戏里面需要使用到的游戏场景进行了封装,分别实现了Game,Sprite,enemy,player, base,Animati ...

  4. 复习C语言基础知识(day02)

    一.大型软件组织 定义规则,规则就是协议.用户和中介的接口. 软件开发的过程: 定义规则,定义协议.软件为用户提供的功能. 在C语言中使用接口实现.接口就是函数. 两种用户 函数的使用者 函数的实现者 ...

  5. workspace 配置

    1.新建workspace 在配置好相关信息前,请勿引入工程代码,避免环境不完整的情况下编译进入长时间等待 2.设置工作窗体结构 建议使用Java模式开发窗体设置 3. 编码 工程全部采用UTF-8编 ...

  6. python orm框架-----SQLALchemy-查询篇

    似乎ORM最难设计的部分是查询.特别是面向对象的查询,今天学习SQLAlchemy,发现SQLAlchemy的查询语法竟如此灵活,惊叹其如此强大的表达能力的同时也对Python也有了更深的认识.下面看 ...

  7. MySQL 存储过程的异常处理

    mysql> mysql> delimiter $$ mysql> mysql> CREATE PROCEDURE myProc     ->     (p_first_ ...

  8. codeforces 257B

    #include<stdio.h> #define mod 1000000007 int main() { __int64 n,m,i,j,k,x,y,z; while(scanf(&qu ...

  9. [bzoj1610][Usaco2008 Feb]Line连线游戏_暴力枚举

    Line连线游戏 bzoj-1610 Usaco-2008 Feb 题目大意:Farmer John最近发明了一个游戏,来考验自命不凡的贝茜.游戏开始的时 候,FJ会给贝茜一块画着N (2 <= ...

  10. gdb的follow-fork-mode使用以及多线程操作

    对于多线程,如果希望让其他线程不执行,只有调试线程执行,使用 set scheduler-locking [on|off|step]