这个 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的更多相关文章

  1. 补习系列(19)-springboot JPA + PostGreSQL

    目录 SpringBoot 整合 PostGreSQL 一.PostGreSQL简介 二.关于 SpringDataJPA 三.整合 PostGreSQL A. 依赖包 B. 配置文件 C. 模型定义 ...

  2. ASP.NET MVC 使用 Petapoco 微型ORM框架+NpgSql驱动连接 PostgreSQL数据库

    前段时间在园子里看到了小蝶惊鸿 发布的有关绿色版的Linux.NET——“Jws.Mono”.由于我对.Net程序跑在Linux上非常感兴趣,自己也看了一些有关mono的资料,但是一直没有时间抽出时间 ...

  3. 视频教程--ASP.NET MVC 使用 Petapoco 微型ORM框架+NpgSql驱动连接 PostgreSQL数据库

    说好的给园子里的朋友们录制与<ASP.NET MVC 使用 Petapoco 微型ORM框架+NpgSql驱动连接 PostgreSQL数据库> 这篇博客相对应的视频,由于一个月一来没有时 ...

  4. kali linux 系列教程之metasploit 连接postgresql可能遇见的问题

    kali linux 系列教程之metasploit 连接postgresql可能遇见的问题 文/玄魂   目录 kali linux 下metasploit 连接postgresql可能遇见的问题. ...

  5. Entity Freamwork 6连接PostgreSql数据库

    原文 Entity Freamwork 6连接PostgreSql数据库 开发环境 VS 2015  Update 1   Postgre Sql 9.4 使用过程 1.使用Nuget在项目中添加对E ...

  6. php连接postgresql

    在ubuntu下用php连接postgresql需要下个模块php5-pgsql 连接数据库并显示一张表的内容: <?php #连接数据库 $conn = pg_connect("ho ...

  7. python连接postgresql数据库

    python可以通过第三方模块连接postgresql. 比较有名的有psycopg2  和python3-postgresql (一)psycopg2 ubuntu下安装 sudo apt-get ...

  8. Abp.NHibernate连接PostgreSQl数据库

    Abp.NHibernate动态库连接PostgreSQl数据库 初次接触Abp框架,其框架中封装的操作各类数据的方法还是很好用的,本人还在进一步的学习当中,并将利用abp.NHibernate类库操 ...

  9. QT连接postgreSQL

    这是我之前项目遇到的问题,连接postgreSQL数据库,一直找不到引擎,最后终于找到 原因了,需要程序加载 1.安装postgresql客户端,2.需要配置postgresql客户端的bin和lib ...

随机推荐

  1. centos docker

    1.安装docker yum install docker --安装docker service docker start  --启动docker服务 docker --version  --查看版本 ...

  2. delphi中检测局域网ip能够ping通模块

    // 函数PingHost用于ping目标IP是否连通 // uses winsock    在uses中加入  winsock // 用法:  if PingHost(edit2.Text) the ...

  3. PE下挂载注册表文件然后清除系统托盘空白图标缓存

    清除了右下角通知栏图标缓存TrayNotify(否则会出现一堆空白图标)清除缓存批处理脚本.bat如何在PE系统环境下清除宿主系统的托盘图标缓存? 清除了右下角通知栏图标缓存TrayNotify(否则 ...

  4. atitit.线程死锁 卡住无反应 的原因in cmd调用的解决方案  v3 q39

    atitit.线程死锁 卡住无反应 的原因in cmd调用的解决方案  v3 q39 1. 问题::线程死锁  卡住无反应1 1.1. 分类:: cmd调用,  net io  , file  io  ...

  5. flink-connector-kafka consumer checkpoint源码分析

    转发请注明原创地址:http://www.cnblogs.com/dongxiao-yang/p/7700600.html <flink-connector-kafka consumer的top ...

  6. vm中安装ubuntu16

    安装完成后,开机出现 smbus host controller not enabled 上网照着网友的建议: 在grub界面选择高级选项 root shell 进入到shell之后 mount -o ...

  7. inode表元数据,存储在物理存储体上

    一个文件除了数据需要存储之外,一些描述信息也需要存储,例如文件类型(常规.目录.符号链接等),权限,文件大小,创建/修改/访问时间等,也就是ls -l命令看到的那些信息,这些信息存在inode中而不是 ...

  8. kdump 的使用在linux崩溃时

    Centos7/RHEL7 开启kdump 翻译 2017年12月18日 16:58:28 标签: kernel / kdump / crash / centos 437 原文链接<How to ...

  9. webpack issues

    webpack-dev-server安装失败 npm ERR! path C:\Users\YYT\Desktop\dot_webpack\node_modules\express\node_modu ...

  10. samba在linux下的配置

    Samba配置过程容易遇到的问题 samba的安装很简单,搜索一下都能找到.我主要是记录一上我碰到的问题及解决的办法 第一个问题 防火墙的问题,粗暴的办法是直接把防火墙关掉,合适的做法是把samba用 ...