Правильное преобразование потока данных BYTEA в Spring+Postgres+Docker

у меня был прошлый топик на эту тему, благополучно решённый.

Сейчас новая проблема. Я работаю с файлами - делаю простой crud для них в БД. Вот часть моей сущности в spring data jpa, которая преобразует входящих поток данных в bytea и сохраняет в базу.


@Entity
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
@EntityListeners(AuditingEntityListener.class)
@ToString(exclude = { "data" })
public class FileEntity implements BaseEntity, Authorable, Available {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String filename;
    private String filetype;

//    @Lob
    @Column(columnDefinition = "BYTEA")
    private byte[] data;

    @ManyToOne(fetch = FetchType.EAGER)
    @JsonProperty("author")
    @JoinColumn(name = "author_id")
    private User author;

    @JsonProperty(value = "public_file_entity", defaultValue = "false")
    private Boolean publicEntity = false;

Проблема в том, что при работе локально с Postgres 16.3 я использую обе аннотации

    @Lob
    @Column(columnDefinition = "BYTEA")

и все корректно работает, создаются колонки с типом bytea. При деплое и запуске через docker-compose такая система не работает, но если я убираю аннотацию @Lob - все срабатывает. Однако уже локально , имея только аннотацию @Column(columnDefinition = "BYTEA") я получаю ошибку

2024-07-26T17:05:41.815+03:00  WARN 1776481 --- [DocumentAccounting2] [nio-8080-exec-4] o.h.engine.jdbc.spi.SqlExceptionHelper   : SQL Error: 0, SQLState: 42804
2024-07-26T17:05:41.815+03:00 ERROR 1776481 --- [DocumentAccounting2] [nio-8080-exec-4] o.h.engine.jdbc.spi.SqlExceptionHelper   : ОШИБКА: столбец "data" имеет тип oid, а выражение - bytea
  Подсказка: Перепишите выражение или преобразуйте его тип.
  Позиция: 102
2024-07-26T17:05:41.817+03:00 DEBUG 1776481 --- [DocumentAccounting2] [nio-8080-exec-4] o.s.orm.jpa.JpaTransactionManager        : Initiating transaction rollback

И столбец в БД становиться типа oid введите сюда описание изображения

Подскажи пожалуйста,

  • как найти универсальное решение и для локали и для докера?
  • в чем именно проблема, почему хибер ведёт себя так в этой ситуации? Поделитесь знаниями, пожалуйста

Ответы (0 шт):