为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:8
【操作系统】:windows10
【CPU】:i7-7700
【问题描述】*:
Springboot 连接 达梦数据库 自动生成表结构问题
之前是Springboot 连接 Mysql不会出现问题
Entity中
1、布尔型字段 注解 @ColumnDefault('true') @ColumnDefault('false') 不支持 只支持@ColumnDefault('0') @ColumnDefault('1')写法 代码要改很多地方
2、多注解兼容问题 @Column(columnDefinition="bit comment '停用标记 0-未停用 1-停用' ") 和 @ColumnDefault('0') 注解同一字段 jpa创建表语句就会报错
3、Operator Role等关键字表会自动转成大写,导致项目每次运行时每次都创建Operator表 但数据库中存在OPERATOR表,就会提示表已存在
4、表字段user不支持,自动创建表时报错
表字段不支持user,因为user是数据库的关键字,在SQL解析阶段会把它识别成关键字而报语法错误。可以通过加双引号来屏蔽关键字,举个栗子:
create table "user"("user1" int);
这样的SQL可以执行,但是在查询的时候,也要通过双引号来屏蔽关键字:
select "user1" from "user";
很麻烦。。。
所以,最好还是换个名字,因为数据库关键字还有很多,有一些是不可屏蔽的关键字。这点和oracle也是一样的,DM走的是全面兼容oracle的路线。
表名自动转大写的问题:你传给数据库的SQL在执行前系统会默认将所有字符转换为大写,这点和oracle是一样的,如果想要表名保持为你自己设置的样子需要在表名外层加引号.
举个栗子:
create table "AaBb" (c1 int, c2 float);
这样的SQL在数据库里执行的实际是:
CREATE TABLE "AaBb" (C1 INT, C2 FLOAT);