600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 国产数据库《人大金仓v8》适配过程问题解决记录

国产数据库《人大金仓v8》适配过程问题解决记录

时间:2023-09-12 20:48:56

相关推荐

国产数据库《人大金仓v8》适配过程问题解决记录

前言

注意:人大金仓数据库是一款基于PostgrelSQL开发的国产数据库,它的命令行、配置文件以及各种使用上都有PGSQL的影子,然后在PGSQL的基础上增加了图形化管理(参考:人大金仓Kingbase V8安装教程);

因此开发适配的时候,有些找不到资料的语法可以参考PostgrelSQL;

一、适配准备工作,准备人大金仓的jdbc驱动以及hibernate方言包

问题说明:人大金仓有不同jdk版本的驱动包,以及各个hibernate版本的适配方言,在安装目录的里面的jdbc文件里面;

解决步骤:根据自己的环境找到对应的驱动文件,以及方言包即可(因为使用maven管理依赖,所以直接把jar安装在本地仓库就可以了);(使用的是jdk8的驱动文件,以及hibernate4.3.11版本对应的方言)

然后准备hibernate数据源的配置文件

#kingbase8hibernate.dialect=org.hibernate.dialect.Kingbase8Dialecthibernate.validationQuery=SELECT 1hibernate.database.name=TESTDBhibernate.url=jdbc:kingbase8://192.167.11.11:54321/${jdbc.database.name}hibernate.username=TEST001hibernate.password=123456hibernate.driver=com.kingbase8.Driver

二、insert数据时,报错:Start position [1] cannot exceed overall CLOB length [0]

问题说明:如果成员属性的类型是Clob,然后列值设置的是null或者""(空字符串),就会有这个异常产生;

解决步骤:根据报错位置,找到该类型是Hibernate核心包里面的org.hibernate.engine.jdbc.ClobProxy ,找到这个报错的位置,通过断点查看到,由于传入的时候start 默认是1,然后实际上长度 getLength() 是0,所以导致抛出了这个异常,然后实际使用的时候写的是 start - 1,所以按理说这个判断可以直接改成 start - 1 > getLength() ;

三、项目activiti框架初始化报错,报错:ActivitiException: couldn't deduct database type from database product name 'KingbaseES'

问题说明:activiti框架默认肯定是不支持人大金仓数据库的,所以这个需要修改activiti的源代码增加人大金仓的数据库支持;(目前版本是5.20版本,版本比较旧了,但是按理说新版本应该也是这么适配的)

解决步骤:通过依赖库找到activiti-engine-xxx-source.jar ,从这个jar里面获取核心配置类org.activiti.engine.impl.cfg.ProcessEngineConfigurationImpl 的源代码,放到项目的主启动模块(当然也可以重新打包成jar),然后找到"PostgreSQL",添加如下图所示的适配代码,注意:这个意思就是人大金仓的数据库初始化、数据查询等语句都是用 PostgreSQL的,目前看下来基本上都是可以适配的,但是需要注意: 人大金仓数据库安装时要设置为大小写不敏感;

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。