Подтвердить что ты не робот

Хранить строки произвольной длины в Postgresql

У меня есть приложение Spring, которое использует JPA (Hibernate), первоначально созданный с помощью Spring Roo. Мне нужно сохранить строки с произвольной длиной, поэтому по этой причине я аннотировал поле с помощью @Lob:

public class MyEntity{

    @NotNull
    @Size(min = 2)
    @Lob
    private String message;

    ...
}

Приложение работает нормально в localhost, но я развернул его на внешний сервер и возникла проблема с кодировкой. По этой причине я хотел бы проверить, нормально ли хранятся данные, хранящиеся в базе данных PostgreSQL. Приложение автоматически создает/обновляет таблицы. И для этого поля (сообщения) он создал столбец типа:

текст NOT NULL

Проблема в том, что после хранения данных, если я просматриваю таблицу или просто выполняю SELECT этого столбца, я не вижу текст, кроме цифр. Эти числа, по-видимому, являются идентификаторами "где-то", где хранится эта информация.

Может ли кто-нибудь сказать мне, какие именно эти идентификаторы, и есть ли способ увидеть хранимые данные в столбце @Lob из pgAdmin или предложения select?

Есть ли лучший способ хранения строк произвольной длины в JPA?

Спасибо.

4b9b3361

Ответ 1

Я бы рекомендовал пропустить аннотацию @Lob и использовать функцию columnDefinition следующим образом:

@Column(columnDefinition="TEXT")

или

@Column(columnDefinition="LONGTEXT")

Посмотрите, помогает ли это просматривать данные во время просмотра самой базы данных.

Ответ 2

Используйте определение @LOB, это правильно. Таблица хранит OID в каталогах → postegreSQL- > tables → pg_largeobject table.

Двоичные данные хранятся здесь эффективно, и JPA будет правильно выводить данные и хранить их для вас с этим в качестве детали реализации.