我正在使用 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/