将 json 字符串从 spring 应用程序插入到 postgres jsonb
inserting json string from spring application into postgres jsonb
我想将 json 字符串插入 jsonb
数据类型的 postgres 列中,该字符串没有预定义结构,即键值格式不固定。我的应用程序使用 HikariCP 和 JPA。
早些时候,我在 postgres 中使用了以下通用转换操作来实现上述目标,但我的 DBA 不推荐这样做,因为它从根本上改变了 varchar 数据类型。
CREATE CAST (character varying AS jsonb) WITH INOUT AS IMPLICIT;
在寻找应用程序端替代方案时,我发现将字符串类型设置为未指定,如下所示
spring:
profiles: development
datasource:
type: com.zaxxer.hikari.HikariDataSource
driver-class-name: org.postgresql.Driver
url: jdbc:postgresql://127.0.0.1/mydb
username: my_user
password: 'my_password'
hikari:
auto-commit: true
maximumPoolSize: 2
leakDetectionThreshold: 60000
tomcat:
connection-properties: stringtype=unspecified
以上配置没有帮助。连接属性似乎不是数据源的直接 属性。论坛上的各种答案只是告诉你在连接属性中设置 stringtype=unspecified 但一个明确的工作答案会更有帮助。
思来想去,我意识到这个属性必须设置HikariCP。当我查看它允许我设置的各种参数时,我遇到了数据源属性。以下是我发现的解决上述问题的方法
hikari:
data-source-properties: stringtype=unspecified
我想将 json 字符串插入 jsonb
数据类型的 postgres 列中,该字符串没有预定义结构,即键值格式不固定。我的应用程序使用 HikariCP 和 JPA。
早些时候,我在 postgres 中使用了以下通用转换操作来实现上述目标,但我的 DBA 不推荐这样做,因为它从根本上改变了 varchar 数据类型。
CREATE CAST (character varying AS jsonb) WITH INOUT AS IMPLICIT;
在寻找应用程序端替代方案时,我发现将字符串类型设置为未指定,如下所示
spring:
profiles: development
datasource:
type: com.zaxxer.hikari.HikariDataSource
driver-class-name: org.postgresql.Driver
url: jdbc:postgresql://127.0.0.1/mydb
username: my_user
password: 'my_password'
hikari:
auto-commit: true
maximumPoolSize: 2
leakDetectionThreshold: 60000
tomcat:
connection-properties: stringtype=unspecified
以上配置没有帮助。连接属性似乎不是数据源的直接 属性。论坛上的各种答案只是告诉你在连接属性中设置 stringtype=unspecified 但一个明确的工作答案会更有帮助。
思来想去,我意识到这个属性必须设置HikariCP。当我查看它允许我设置的各种参数时,我遇到了数据源属性。以下是我发现的解决上述问题的方法
hikari:
data-source-properties: stringtype=unspecified