本文已参与「新人创作礼」活动,一起开启掘金创作之路。
国产化适配文档(神通)
环境:hibernate、spring、activiti等
maven 依赖
springboot集成神通数据库,但是maven库中是没有的,所以需要自己引入maven库中
# oscarJDBC16
mvn install:install-file -DgroupId=com.oscar -DartifactId=oscarJDBC16 -Dversion=1.0 -Dpackaging=jar -Dfile=F:\神通数据库\oscarJDBC16.jar
# oscarHibernate5 (若该版本方言导致启动报错,使用版本4)
mvn install:install-file -DgroupId=com.oscar -DartifactId=oscarHibernate5 -Dversion=1.0 -Dpackaging=jar -Dfile=F:\神通数据库\oscarHibernate5.jar
# oscarHibernate4
mvn install:install-file -DgroupId=com.oscar -DartifactId=oscarHibernate4 -Dversion=1.0 -Dpackaging=jar -Dfile=F:\神通数据库\oscarHibernate4.jar
# activiti 修改源码 jar
-- 下载地址 :https://download.csdn.net/download/qq_35385687/74052485
mvn install:install-file -DgroupId=org.activiti -DartifactId=activiti-engine -Dversion=5.21.0 -Dpackaging=jar -Dfile=F:\神通数据库\activiti-engine-5.21.0.jar
# -Dfile:jar包在硬盘上的位置
# -DgroupId, -DartifactId, -Dversion:三个参数,指定存放maven仓库中的位置(与引入依赖时的属性相对应,自定义);
# -Dpackaging :打包类型,例如JAR;
<dependency>
<groupId>com.oscar</groupId>
<artifactId>oscarJDBC16</artifactId>
<version>1.0</version>
</dependency>
<dependency>
<groupId>com.oscar</groupId>
<artifactId>oscarHibernate4</artifactId>
<version>1.0</version>
</dependency>
<!-- Activiti 修改源码的-->
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-engine</artifactId>
<version>5.21.0</version>
</dependency>
jdbc.type=oscar
#jdbc.type=oracle
jdbc.driver=com.oscar.Driver
jdbc.url=jdbc:oscar://10.39.65.177:2003/OSRDB?serverTimezone=UTC&useSSL=FALSE
jdbc.username=xxx
jdbc.password=xxx
hibernate.dialect=org.hibernate.dialect.OscarDialect
#hibernate.dialect=org.hibernate.dialect.OracleDialect
#hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
sql
-
MySQL 使用反引号 ` 来引用系统标识符,这是绝对非数据库标准的。 神通不能使用此反引号
-
列名不区分大小写,字段值区分大小写
-
修改表语法
ALTER TABLE "ZBDB"."TEST1206" ADD <列名> <类型>;
ALTER TABLE "ZBDB"."TEST1206" DROP <列名> [ RESTRICT | CASCADE ];
ALTER TABLE "ZBDB"."TEST1206" ALTER <列名> { SET DEFAULT <值> | DROP DEFAULT };
ALTER TABLE "ZBDB"."TEST1206" ALTER <列名> { SET | DROP } NOT NULL;
ALTER TABLE "ZBDB"."TEST1206" ALTER <列名> SET STORAGE { PLAIN | EXTERNAL | EXTENDED | MAIN };
ALTER TABLE "ZBDB"."TEST1206" RENAME <列名> TO <新列名>;
ALTER TABLE "ZBDB"."TEST1206" ADD <表约束>;
ALTER TABLE "ZBDB"."TEST1206" DROP CONSTRAINT <约束名> [ RESTRICT | CASCADE ];
ALTER TABLE "ZBDB"."TEST1206" OWNER TO <新所有者>;
- information_schema
查询表的列名(Column)和Schema下的表名
blog.csdn.net/huanloveqia…
1. TABLE_CAT:视图所在的 CATLOG 名称 (目前等于数据库名称)
2. TABLE_SCHEM:视图所在的模式名称
3. TABLE_NAME:视图名称
4. OWNER 所属用户
-- mysql
select TABLE_NAME from information_schema.TABLES where table_name ='t_202112021' and table_schema = 'OSRDB';
--查询表的列名
SELECT * FROM INFO_SCHEM.ALL_TAB_COLUMNS WHERE OWNER = 'ZBDB' and TABLE_NAME = 't_202112021'
-- 查询所有表
SELECT * FROM INFO_SCHEM.ALL_TABLES WHERE OWNER = 'ZBDB' and table_name ='t_202112021'
-- 查询Schema下的表名
SELECT * FROM INFO_SCHEM.TABLES where TABLE_Cat = 'OSRDB' and TABLE_SCHEM = 'ZBDB' and table_name ='t_202112021'
-- 当前模式
SELECT CURRENT_SCHEMA();
-- 当前数据库
select database()
-- 查询主键 和 外键
SELECT * FROM INFO_SCHEM.ALL_CONSTRAINTS WHERE OWNER = 'ZBDB' and table_name ='t_202112021'
-- 或
SELECT TABLE_NAME,COLUMN_NAME,CONSTRAINT_NAME FROM INFO_SCHEM.ALL_CONS_COLUMNS WHERE OWNER = 'ZBDB' and TABLE_NAME = 'ACCOUNT1'
-- 删除外键
ALTER TABLE "ZBDB"."T_202112021" DROP CONSTRAINT T_202112021_PK;
- 列注释
COMMENT 不支持, 我的做法是删除注释
-
datetime->timestamp without time zone
-
vchar->character varying
-
PRIMARY KEY ( id ) -> CONSTRAINT BA_RETREAT_PROCESS2_PK PRIMARY KEY (id)
-
int
神通数据库中整数类型包括 tinyint,smallint,integer,bigint,它们是不含小数部分的数字。
常用的整数类型是 integer,它提供了在范围,存储空间和性能之间的最佳平衡,一般只有在磁盘空间紧张的时候
才使用 smallint,而在 integer 的范围不够时才使用 bigint。bigint 类型依赖编译器对八字节整数的支持
因此有可能在不同机器上表现不同
- longText
CLOB 称为字符大对象,用于存储大数据量的字符数据,它们的最大容量均为 4G。
- 外键
示例:CONSTRAINT FK_P1VLHQTI844J2C74HM4WTIKRV FOREIGN KEY (STATUS) REFERENCES ZBDB.SYS_DICT(ID)
- ALTER TABLE "ZBDB"."TEST1206" DROP <列名> [ RESTRICT | CASCADE ];
不支持 ALTER TABLE "ZBDB"."TEST1206" DROP <列名>, <列名>... 语法
可使用循环替换该逻辑
项目
- No row with the given identifier exists
有两张表,a和b.产生此问题的原因就是a里做了关联或者(特殊的多对一映射,实际就是一对一)来关联b. 当hibernate查找的时候,b里的数据没有与a相匹配的,这样就会报No row with the given identifier exists这个错.(一句话,就是数据的问题!)
- object references an unsaved transient instance - save the transient instance before flushing: com.thinkgem.jeesite.modules.sys.entity.User
- Could not auto-size column.Make sure the column was tracked prior to auto-sizing the column.
导出、导入Excel 文件 blog.csdn.net/u010953431/…
[Druid-ConnectionPool-Destory-879682170] ERROR [com.alibaba.druid.pool.DruidDataSource] - abandon connection, open stackTrace
- connection holder is null