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

问题描述:

环境:

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. PAT_A1151#LCA in a Binary Tree

    Source: PAT A1151 LCA in a Binary Tree (30 分) Description: The lowest common ancestor (LCA) of two n ...

  2. swift-计算字符串长度

    text.characters.count(记得text一定要是String类型)

  3. 继承(day09)

    二十一 继承(Inheritance) ... 子类的构造函数和析构函数 5.1 子类的构造函数 )如果子类构造函数没有显式指明基类子对象的初始化方式,那么该子对象将以无参方式被初始化. )如果希望基 ...

  4. Linux思维导图之计划任务

    查漏补缺,理解概念,及时总结,互相交流,欢迎拍砖. 用yum install -y vixie-cron这个命令进行安装计划任务服务,可以在安装之前使用crontab -e进行检测一下,服务器是否安装 ...

  5. python3实现UDP协议的简单服务器和客户端

    利用python中的socket模块中的来实现UDP协议,这里写一个简单的服务器和客户端.为了说明网络编程中UDP的应用,这里就不写图形化了,在两台电脑上分别打开UDP的客户端和服务端就可以了. UD ...

  6. Bootstrap关于表单控件(按扭)

    按钮也是表单重要控件之一,制作按钮通常使用下面代码来实现:   ☑  input[type=“submit”]   ☑  input[type=“button”]   ☑  input[type=“r ...

  7. Python中的sorted() 和 list.sort() 的用法总结

    只要是可迭代对象都可以用sorted . sorted(itrearble, cmp=None, key=None, reverse=False) =号后面是默认值 默认是升序排序的, 如果想让结果降 ...

  8. 【学习笔记】有向无环图上的DP

    手动博客搬家: 本文发表于20180716 10:49:04, 原地址https://blog.csdn.net/suncongbo/article/details/81061378 首先,感谢以下几 ...

  9. Html5最简单的游戏Demo——Canvas绘图的骰子

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <t ...

  10. [bzoj3943][Usaco2015 Feb]SuperBull_Kruskal

    SuperBull bzoj-3943 Usaco-2015 Feb 题目大意:贝西和她的朋友们在参加一年一度的“犇”(足)球锦标赛.FJ的任务是让这场锦标赛尽可能地好看.一共有N支球队参加这场比赛, ...