Управление большими двоичными объектами для базы данных Postgres с помощью Spring Boot, JPA и спящего режимаJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Управление большими двоичными объектами для базы данных Postgres с помощью Spring Boot, JPA и спящего режима

Сообщение Anonymous »

Мы хотим перенести базу данных Oracle с типом BLOB для некоторых столбцов в базу данных Postgres и чтобы наше приложение Spring Boot работало с ней (мы используем JPA и спящий режим).
Я видел, что BLOB из Oracle эквивалентен BYTEA в Postgres, но я также видел в Интернете обсуждения, в которых говорилось о том, что диалект учитывает тип OID вместо BYTEA для больших двоичных объектов:

Код: Выделить всё

public class PostgreSQLDialect extends Dialect {
...
@Override
   protected String columnType(int sqlTypeCode) {
...
case BLOB:
      case CLOB:
      case NCLOB:
        // use oid as the blob/clob type on Postgres because
        // the JDBC driver doesn't allow using bytea/text via
        // LOB APIs
        return "oid";

      // use bytea as the "long" binary type (that there is no
      // real VARBINARY type in Postgres, so we always use this)
      case BINARY:
      case VARBINARY:
      case LONG32VARBINARY:
        return "bytea";
...
}
}
В комментарии указано, почему в диалекте используется oid. Так что, похоже, следует использовать oid.
Кроме того, я видел, что у некоторых людей могут возникать ошибки при использовании BYTEA:

Код: Выделить всё

java.sql.SQLException: ERROR: column "xxxxx"
is of type bytea but expression is of type oid
Код моей сущности использует java.sql.Blob:

Код: Выделить всё

@Column(name = "DOCUMENT")
private Blob document;
Я также видел, что при удалении строки oid из таблицы сам большой объект остается в БД, если вы используете Hibernate, а это не то, что нам нужно (мы хотим удалить Blob, а не только oid, ссылающийся на большой объект в файловой системе).
В этом обсуждении рекомендуется использовать BYTEA, если тип BLOB в Oracle: https://dba.stackexchange.com/questions ... postgresql
Итак, я заблудился. Что мне следует использовать для работы с большими двоичными объектами для типа столбца без проблем с Spring Boot? БАЙТЕА или ОИД? А как правильно удалить блоб, если используется тип OID?

Подробнее здесь: https://stackoverflow.com/questions/798 ... -hibernate
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»