2017-02-22 108 views
3

如何告訴Liquibase將BLOB數據類型映射到PosgreSQL上的BYTEA?強制Liquibase將Blob映射到PosgreSQL上的BYTEA

看來,Hibernate的人已接管和適應的工具來他們的需求:https://liquibase.jira.com/browse/CORE-1863,然而,的EclipseLink不支持OID的和錯誤似乎仍處於打開狀態:https://bugs.eclipse.org/bugs/show_bug.cgi?id=337467

我需要使用的EclipseLink,我需要在PostgreSQL中使用blob。我想使用Liquibase,是否有可能讓這些事情一起工作?

+1

如果你只用Postgres的更新日誌,簡單地使用'bytea'作爲列類型而不是'blob' –

+0

@a_horse_with_no_name我已經在考慮把塊,但你的解決方案很好。我認爲只有liquibase支持'支持'類型,它們的文檔不是特別直觀。 –

回答

8

您有兩種選擇。

如果您只需要Postgres,並且不打算支持其他DBMS,只需使用bytea作爲列類型。

未在column tag的描述中列爲「通用」類型之一的任何數據類型將「按原樣」傳遞給數據庫,例如,

<createTable tableName="foo"> 
    <column name="id" type="integer"/> 
    <column name="picture" type="bytea"/> 
</createTable> 

如果你想支持不同的數據庫管理系統,您可以根據DBMS定義屬性:

<property name="blob_type" value="bytea" dbms="postgresql"/> 
<property name="blob_type" value="blob" dbms="oracle"/> 

後來

<createTable tableName="foo"> 
    <column name="id" type="integer"/> 
    <column name="picture" type="${blob_type}"/> 
</createTable> 
相關問題