Java Postgres错误方法org.postgresql.jdbc.PgConnection.createClob()未实现
当我使用连接对象调用Java Postgres错误方法org.postgresql.jdbc.PgConnection.createClob()未实现,java,postgresql,jdbc,apache-commons-dbcp,Java,Postgresql,Jdbc,Apache Commons Dbcp,当我使用连接对象调用createClob方法时,如下所示: Clob clob = con.createClob(); 引发以下异常: Caused by: java.sql.SQLFeatureNotSupportedException: Method org.postgresql.jdbc.PgConnection.createClob() is not yet implemented. at org.postgresql.Driver.notImplemented(Dri
createClob
方法时,如下所示:
Clob clob = con.createClob();
引发以下异常:
Caused by: java.sql.SQLFeatureNotSupportedException: Method org.postgresql.jdbc.PgConnection.createClob() is not yet implemented.
at org.postgresql.Driver.notImplemented(Driver.java:659)
at org.postgresql.jdbc.PgConnection.createClob(PgConnection.java:1246)
at org.apache.commons.dbcp2.DelegatingConnection.createClob(DelegatingConnection.java:868)
at org.apache.commons.dbcp2.DelegatingConnection.createClob(DelegatingConnection.java:868)
我将数据库PostgreSQL 9.6.2与JDK8一起使用,并使用commons-dbcp2连接池,并在pom.xml中添加了以下Postgres依赖项
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>42.1.1</version>
</dependency>
克服此问题的解决方案或解决方法是什么?或者我们如何在Postgres查询中设置CLOB数据?PostgreSQL实际上没有“CLOB”。只需将
setString(String)
或setObject(…)
与类型一起使用即可;DR
- 在
application.yml
中设置spring.jpa.properties.hibernate.jdbc.lob.non_context_creation=true
,或者
- 在
persistence.xml中设置hibernate.jdbc.lob.non_context_creation=true
这是JBoss社区中的一个已知错误
此错误出现在Spring Boot 2.0.0.RC1及更高版本的旧版本和新版本中
解决方案:
使用更新的向后兼容版本更新postgressql驱动程序
- 在
application.yml
中设置spring.jpa.properties.hibernate.jdbc.lob.non_context_creation=true
,或者
- 在persistence.xml中设置
hibernate.jdbc.lob.non_context_creation=true
如果不起作用,请参见下面的技巧:
解决方案是在属性文件中添加这一行(如果您不使用spring,也可以添加类似的内容)
因此,您的application.yml应该如下所示:
spring:
application:
name: employee-service
datasource:
url: jdbc:postgresql://localhost:5432/db_development
platform: POSTGRESQL
username: ...
password: ...
jpa:
hibernate:
ddl-auto: create-drop
dialect: org.hibernate.dialect.PostgreSQL9Dialect
show_sql: true
properties.hibernate.temp.use_jdbc_metadata_defaults: false
server:
port: 8080
参考:
感谢比纳科特的评论。我已经更新了帖子。将其放入应用程序。属性
spring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation=true
使用SpringBoot2.1.9.RELEASE,我添加了以下内容,并且工作正常
spring:
jpa:
properties.hibernate.temp.use_jdbc_metadata_defaults: false
database-platform: org.hibernate.dialect.PostgreSQL94Dialect
如果您使用Java配置,请将org.hibernate.cfg.AvailableSettings#NON#u context_LOB_CREATION
添加为JpaPropertyMap的键,并将“true”
作为值。您也可以在application.yml
中设置NON#context_CREATION
(不仅在persistence.xml
中):spring.jpa.properties.hibernate.jdbc.lob.non_context_creation=true
spring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation=true
spring:
jpa:
properties.hibernate.temp.use_jdbc_metadata_defaults: false
database-platform: org.hibernate.dialect.PostgreSQL94Dialect