有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

关于Spring数据JDBC+Hikari+PostgresJSONB的java问题

我正在尝试使用Spring引导数据JDBC和Postgres构建一个API

我有一个简单的pojo,我想写在一张桌子上:

public final class Test {
   private final String id;
   private final String definition;
}

该表有两列,一个varcharid列和一个jsonbdefinition

当使用简单的CRUD存储库保存pojo时,我得到以下错误

ERROR: column "definition" is of type jsonb but expression is of type character varying

解决这个问题的方法通常是在应用程序中传递spring.datasourcehikari.connection-properties: stringtype=unspecified。yml,但我没法让它工作

当我激活hikari的调试日志时,我可以看到我为它激活的其他设置(比如池名)

HikariConfig testPool - configuration:
HikariConfig allowPoolSuspension.............false
HikariConfig autoCommit......................true
HikariConfig catalog.........................none
HikariConfig connectionInitSql...............none
HikariConfig connectionTestQuery.............none
HikariConfig connectionTimeout...............30000
HikariConfig dataSource......................none
HikariConfig dataSourceClassName.............none
HikariConfig dataSourceJNDI..................none
HikariConfig dataSourceProperties............{password=<masked>}
HikariConfig driverClassName................."org.postgresql.Driver"
HikariConfig healthCheckProperties...........{}
HikariConfig healthCheckRegistry.............none
HikariConfig idleTimeout.....................600000
HikariConfig initializationFailTimeout.......1
HikariConfig isolateInternalQueries..........false
HikariConfig jdbcUrl.........................jdbc:postgresql://localhost/test
HikariConfig leakDetectionThreshold..........0
HikariConfig maxLifetime.....................1800000
HikariConfig maximumPoolSize.................10
HikariConfig metricRegistry..................none
HikariConfig metricsTrackerFactory...........none
HikariConfig minimumIdle.....................10
HikariConfig password........................<masked>
HikariConfig poolName........................"testPool"
HikariConfig readOnly........................false
HikariConfig registerMbeans..................false
HikariConfig scheduledExecutor...............none
HikariConfig schema..........................none
HikariConfig threadFactory...................internal
HikariConfig transactionIsolation............default
HikariConfig username........................"test"
HikariConfig validationTimeout...............5000
HikariDataSource testPool - Starting...
HikariPool testPool - Added connection org.postgresql.jdbc.PgConnection@49ba49a7
HikariDataSource testPool - Start completed.

这是我的申请表。yml:

spring:
  datasource:
    url: jdbc:postgresql://localhost/test
    username: test
    hikari:
      connection-properties: stringtype=unspecified
      poolName: testPool
logging.level.com.zaxxer.hikari: DEBUG

有什么想法吗?🙏

编辑:

这是存储库界面:

@Repository
interface TestRepository extends org.springframework.data.repository.<Test, String>{
}

共 (1) 个答案

  1. # 1 楼答案

    我认为您需要使用属性文件中的数据源属性,如下所示

    春天。数据源。希卡里。数据源属性=stringtype=未指定

    然后在“定义”的getter上方添加两个注释

    @Basic @枚举(EnumType.STRING) 公共字符串getDefinition(){ 返回定义; }