强制Liquibase将Blob映射到PostgreSQL上的BYTEA

时间:2017-02-22 10:41:04

标签: postgresql blob liquibase

如何告诉Liquibase在PostgreSQL上将BLOB数据类型映射到BYTEA?

似乎Hibernate人员已经接管并调整了该工具以满足他们的需求:https://liquibase.jira.com/browse/CORE-1863但是,EclipseLink不支持oid,并且该bug似乎仍然是开放的:{{ 3}}

我需要使用EclipseLink,我需要在PostgreSQL中使用blob。我想使用Liquibase,是否有可能让这些东西一起工作?

1 个答案:

答案 0 :(得分:14)

您有两种选择。

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

未在column tag描述中列为“通用”类型之一的任何数据类型将“按原样”传递到数据库,例如

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

如果要支持不同的DBMS,可以根据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>