2017-02-22 44 views
3

Как сказать Liquibase для сопоставления BLOB-данных в BYTEA на PosgreSQL?Force Liquibase для отображения Blob на BYTEA на PosgreSQL

Кажется, что Hibernate люди взяли на себя и адаптировать инструмент к их потребностям: https://liquibase.jira.com/browse/CORE-1863, однако, EclipseLink не поддерживает подъязычную-х и ошибку, кажется, все еще открыто: https://bugs.eclipse.org/bugs/show_bug.cgi?id=337467

мне нужно использовать EclipseLink, и мне нужно использовать blobs с PostgreSQL. Я бы хотел использовать Liquibase, возможно ли, чтобы эти вещи работали вместе?

+1

Если вы используете ваш список изменений для Postgres, просто используйте 'bytea' в качестве типа столбца вместо' blob' –

+0

@a_horse_with_no_name Я уже думал о размещении блока , но ваше решение работает хорошо. Я думал, что только поддерживаемые типы поддерживаются Liquibase, их документация не особенно интуитивно понятна. –

ответ

8

У вас есть два варианта.

Если вам это нужно только для Postgres и вы не планируете поддерживать другие СУБД, просто используйте bytea в качестве типа столбца.

Любой тип данных, который не указан как один из «общих» типов в описании column tag, будет передан «как есть» в базу данных, например.

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

Если вы хотите, чтобы поддерживать различные СУБД, вы можете определить свойство в зависимости от СУБД:

<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>