SpringBoot连接PostgreSQL
这个 org.postgresql.jdbc.PgConnection.createClob() 方法尚未被实作
application.properties
spring.datasource.platform=postgres
spring.datasource.url=jdbc:postgresql://10.18.35.155:5432/test1?useSSL=false
spring.datasource.username=abc
spring.datasource.password=abc
spring.jpa.properties.hibernate.temp.use_jdbc_metadata_defaults = false
spring.jpa.database-platform=org.hibernate.dialect.PostgreSQL9Dialect
---------------------
参考https://stackoverflow.com/questions/49683434/spring-boot-app-fails-method-org-postgresql-jdbc4-jdbc4connection-createclob-i
https://github.com/pgjdbc/pgjdbc/issues/1102
---------------------------------------
参考:http://www.cnblogs.com/rim99/p/8672909.html
首先,配置好POM,使用默认配置启动的时候会报一个错误。
java.sql.SQLFeatureNotSupportedException: Method org.postgresql.jdbc.PgConnection.createClob() is not yet implemented.
根据网上查到的资料,这个是由于:Hibernate尝试验证PostgreSQL的CLOB特性,但是PostgreSQL的JDBC驱动并没有实现这个特性,所以抛出了异常。
解决方法是:关闭这个特性的检测。在配置文件里添加如下内容:
spring:
jpa:
# Disable feature detection by this undocumented parameter. Check the org.hibernate.engine.jdbc.internal.JdbcServiceImpl.configure method for more details.
properties.hibernate.temp.use_jdbc_metadata_defaults: false
# Because detection is disabled you have to set correct dialect by hand.
database-platform: org.hibernate.dialect.PostgreSQL9Dialect
接下来,服务可以正常启动了。但是在存表的时候却有一个报错:
org.postgresql.util.PSQLException: ERROR: relation "hibernate_sequence" does not exist
这个报错的原因是领域类里面设定了主键为自增类型,标记了注解@GeneratedValue。这个注解的默认自增类型是GenerationType.AUTO。如果注解的自增类型是AUTO,对于PostgreSQL,Hibernate会默认识别为GenerationType.SEQUENCE。这时就需要一张序列表。如果Hibernate找不到指定的序列表或者没有指定序列表,就会查找名为hibernate_sequence的序列表。如果数据库里没有这张序列表,就会报上面这个错。
不像MySQL的列可以有AUTO_INCREMENT属性表示自增,PostgreSQL默认使用的是序列sequence来实现类似功能。sequence是一种特殊的单行表,用于生成序列数字。
看这里:"hibernate_sequence" does not exist。
哎,本来一张表的事情,要用两张表来完成,好麻烦~~~
不过,PostgreSQL已经完善了这个问题,提供一种“伪“类型——serial。在建表的时候将主键声明为此类型,然后将注解的自增类型修改为GenerationType.IDENTITY,问题就解决了。
为什么说是“伪“类型呢?PostgreSQL的文档说的很清楚。
建表时候,使用语句
CREATE TABLE tablename (
colname SERIAL
);
其实就相当于
CREATE SEQUENCE tablename_colname_seq;
CREATE TABLE tablename (
colname integer NOT NULL DEFAULT nextval('tablename_colname_seq')
);
ALTER SEQUENCE tablename_colname_seq OWNED BY tablename.colname;
完全可以把serial看作是PostgreSQL的语法糖。
------------------------------------
检索数据时出现relation ‘table_name‘’ does not exist的问题
SpringBoot连接PostgreSQL的更多相关文章
- 补习系列(19)-springboot JPA + PostGreSQL
目录 SpringBoot 整合 PostGreSQL 一.PostGreSQL简介 二.关于 SpringDataJPA 三.整合 PostGreSQL A. 依赖包 B. 配置文件 C. 模型定义 ...
- ASP.NET MVC 使用 Petapoco 微型ORM框架+NpgSql驱动连接 PostgreSQL数据库
前段时间在园子里看到了小蝶惊鸿 发布的有关绿色版的Linux.NET——“Jws.Mono”.由于我对.Net程序跑在Linux上非常感兴趣,自己也看了一些有关mono的资料,但是一直没有时间抽出时间 ...
- 视频教程--ASP.NET MVC 使用 Petapoco 微型ORM框架+NpgSql驱动连接 PostgreSQL数据库
说好的给园子里的朋友们录制与<ASP.NET MVC 使用 Petapoco 微型ORM框架+NpgSql驱动连接 PostgreSQL数据库> 这篇博客相对应的视频,由于一个月一来没有时 ...
- kali linux 系列教程之metasploit 连接postgresql可能遇见的问题
kali linux 系列教程之metasploit 连接postgresql可能遇见的问题 文/玄魂 目录 kali linux 下metasploit 连接postgresql可能遇见的问题. ...
- Entity Freamwork 6连接PostgreSql数据库
原文 Entity Freamwork 6连接PostgreSql数据库 开发环境 VS 2015 Update 1 Postgre Sql 9.4 使用过程 1.使用Nuget在项目中添加对E ...
- php连接postgresql
在ubuntu下用php连接postgresql需要下个模块php5-pgsql 连接数据库并显示一张表的内容: <?php #连接数据库 $conn = pg_connect("ho ...
- python连接postgresql数据库
python可以通过第三方模块连接postgresql. 比较有名的有psycopg2 和python3-postgresql (一)psycopg2 ubuntu下安装 sudo apt-get ...
- Abp.NHibernate连接PostgreSQl数据库
Abp.NHibernate动态库连接PostgreSQl数据库 初次接触Abp框架,其框架中封装的操作各类数据的方法还是很好用的,本人还在进一步的学习当中,并将利用abp.NHibernate类库操 ...
- QT连接postgreSQL
这是我之前项目遇到的问题,连接postgreSQL数据库,一直找不到引擎,最后终于找到 原因了,需要程序加载 1.安装postgresql客户端,2.需要配置postgresql客户端的bin和lib ...
随机推荐
- Atitit.数据库表的物理存储结构原理与架构设计与实践
Atitit.数据库表的物理存储结构原理与架构设计与实践 1. Oracle和DB2数据库的存储模型如图: 1 1.1. 2. 表数据在块中的存储以及RowId信息3 2. 数据表的物理存储结构 自然 ...
- Gradle build.gradle to Maven pom.xml ,终于找到你了。
尊重原创:https://blog.csdn.net/kevin_luan/article/details/50996109 根据build.gradle 生成maven pox.xml 1.将以下配 ...
- 美团HD(9)-监听点击城市
DJSelectCityViewController.h // 点击城市发出通知 - (void)tableView:(UITableView *)tableView didSelectRowAtIn ...
- NetBeans 设置界面语言
我就懒得吐槽TNND你就不能让用户自己选择语言?这SB中文翻译我也是醉了,尽是误导人 下面的例子用jMonkeyEngine SDK的设置为例子(本质上就是NetBeans) 英文设置: 中文设置:
- VMware虚拟机 Ubuntu 实用技巧 (1) -- 安装VMware Tool
1.用VM安装Ubuntu后屏幕太小? 2.Ubuntu中的文本与window中的文本不能互相复制黏贴? 如果你遇到以上问题,可以通过在VMware里安装“VMware Tool”插件解决!! 安装步 ...
- jsp a href怎么传参数?
jsp中超链接传值使用键值对格式,多个键值对之间用&分隔,即<a href="show.jsp?name=tom&pass=123&score=78,5&quo ...
- python 面向对象类成员(字段 方法 属性)
一.字段 字段包括:普通字段和静态字段,他们在定义和使用中有所区别,而最本质的区别是内存中保存的位置不同, 普通字段属于对象 静态字段属于类 class Province: # 静态字段 countr ...
- Problem 500!!! (Project Euler 500)
题目大意:求出最小的正整数,它的约数有$2^{500500}$个. 思路:考虑将一个数质因数分解,如果它的约数有$2^{500500}$个, 那么每个质因子的指数一定是$2^k-1$这样的形式. 如果 ...
- ROS导航之地图costmap_2d与bresenham算法
读者可以参读http://wiki.ros.org/costmap_2d costmap_2d: 无论是激光雷达还是如kinect 或xtion pro深度相机作为传感器跑出的2D或3D SLAM ...
- 【转】 VC++ 关闭程序后任务管理器进程中进程仍然存在的解决方法
转载出处:http://blog.csdn.net/zac_sian/article/details/50809084 可以从以下两个方面进行查找! 1.程序开启了进程,进程中使用了while(1), ...