java - 在 liquibase 上用 JSON 内容重构数据库

标签 java json postgresql hibernate liquibase

我正在使用 Java Spring 应用程序 + hibernate + 关系数据库(编辑:我们必须支持 Postgresql、MySql 和 Oracle)。

我们的一些表存储序列化为 JSON 的对象。

我们使用 liquibase 来管理我们的更改,但是当涉及到影响那些 JSON 的更改时,我们不知道该怎么做。

您将如何重构此类数据集?

假设我序列化了这个 POJO:

class POJO {
    String name
    Date   someDate
    Double someDouble
...

然后我们改变它:

class POJO {
    String name
    Date   someDateButAnotherName
    String aNewField
    //Double someDouble  <-- deleted
...

我该如何迁移这个场景?

最佳答案

JSON 序列化是数据库供应商特定的功能,因此 Liquibase xml 语法不支持它。你可以做的是使用原生 sql <sql>标签。

然后,如果您使用 PostgreSQL json functions 将序列化对象存储为 PostgreSQL jsonb 类型.

如果您将其存储为纯字符串,则必须执行 string manipulations那会更棘手。

关于java - 在 liquibase 上用 JSON 内容重构数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46838566/

相关文章:

java - 将 ChartPanel 添加到 CardLayout

java - 如何在extjs中将图表表格数据导出为PDF?

java - 定期向ArrayList添加元素

postgresql - 如何使用 Node.js 中的 Lambda 函数从 Amazon RDS 获取数据?

java - 在java中使用readLine消除读取后的暂停

sql - postgres 使用数组将 2 列转换为 json

android - 无法从 Spring Webservice 中的 START_ARRAY token 反序列化对象实例

java - 将 Map<List<Long>,List<Long>> 转换为字符串并返回

sql - 在 Postgresql 中动态获取别名

sql - 对选定项的操作