java - 关于Spring Data JDBC + Hikari + Postgres JSONB的问题
问题描述
我正在尝试使用 Spring Boot Data JDBC 和 Postgres 构建一个 API。
我有一个简单的 pojo,我想写到一张桌子上:
public final class Test {
private final String id;
private final String definition;
}
该表有 2 列,一个 varcharid
列和一个 jsonbdefinition
列。
使用简单的 CRUD 存储库保存 pojo 时,出现以下错误。
ERROR: column "definition" is of type jsonb but expression is of type character varying
解决方案通常是传入spring.datasourcehikari.connection-properties: stringtype=unspecified
application.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.
这是我的 application.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>{
}
解决方案
我认为您需要在属性文件中使用数据源属性,如下所示
spring.datasource.hikari.data-source-properties = stringtype = unspecified
然后在“定义”的getter上方添加两个注释。
@Basic @Enumerated(EnumType.STRING) public String getDefinition() { 返回定义;}
推荐阅读
- python - 向网络图添加边时出错:清理列表条目的“v_of_edge”
- android - 播放几个小时后应用程序冻结
- python-3.x - TensorFlow Checkpoint 恢复学习率
- google-analytics - 谷歌分析不显示数值
- maven - Maven 插件 maven-antrun-plugin 复制选项不会覆盖
- python - 从 python 文件而不是从命令行运行 pytest 测试
- python - Matplotlib 箱线图和线图在一个图中 - 在带有相应 x 轴的标签上
- arrays - 如何使用 Alice 轮播一次映射一张图像?
- sql - 计数项目时完全外部加入访问
- sql - 基于相同键从另一个表中复制字段的简单 sql 查询