2017-10-19 154 views
0

我正在使用Java Spring應用程序+ hibernate +關係數據庫(編輯:我們必須支持Postgresql,MySql和Oracle)。在liquibase上使用JSON內容重構數據庫

我們的一些表存儲的對象序列化爲JSON。

我們使用liquibase來管理我們的更改,但是當涉及到影響這些JSON的更改時,我們不知道該怎麼做。

你將如何去重構這種類型的數據集?

想象我這個序列POJO:

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

然後我們改變它:

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

我怎麼能遷移這種情況?

+0

如果您的意思是序列化到Serializable,您可以實現Serializable並實現serializeObject,以便它跳過刪除的字段。 如果你在做JSON,可以做類似的事情 –

回答

2

JSON序列化是一個數據庫供應商特定的功能,因此它不受Liquibase xml語法支持。你可以做的是使用<sql>標籤的原生sql。

然後,如果您使用PostgreSQL json functions將您的序列化對象存儲爲PostgreSQL jsonb類型。

如果你將它作爲純字符串存儲,你將不得不做string manipulations這會更棘手。

+0

我們必須支持Postgresql,MySql和Oracle(可能是客戶想要的任何東西)。 – Saita