PostGreSQL 结合 Hibernate 在项目中的使用小结
由于项目需要,现将原来的底层MySQL数据库替换为对空间扩展支持更完善的PostGreSQL数据库。
大概整理了下转化的一些要点。
表对应:
1、MYSQL 的 ID 唯一键 对应 PostgreSQL中的 serial字段。
2、varchar 都一样,注意字符数。
3、int float double 都有对应的字段
4、字段如果有 “`”,去掉。
5、PostgreSQL 是大小写区分的。默认导进去的sql语句都会转为小写。
6、datetime 对应 TIMESTAMP ,date,time 分别都有对应。 PostgreSQL 有 默认 DEFAULT now()。
可能出现的几个错误:
1、postgres默认安装好像不支持hibernate自增长。会提示hibernate_sequence不存在。
执行:
CREATE SEQUENCE hibernate_sequence INCREMENT BY 1 MINVALUE 1 MAXVALUE 9223372036854775807 START WITH 1 CACHE 1;
ALTER TABLE table_name ALTER COLUMN id SET default nextval('hibernate_sequence');
同时在hibernate配置文件中设置Id的生成方式为 identity(前提是数据库中id设置了sequence),即可创建postgres的hibernate自增长支持
2、Postgres另一个小问题上,它的"serial"数据类型(等价于MYSQL的auto_increment)会造成一个"sequence"。
如果从mysql中批量导入数据,会存在 自动 department_id_seq 下的 START 1 不自动增加。
解决方法,直接用pgadmin管理更改。