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

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

public class MyEntity{

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

    ...
}

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

текст не NULL

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

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

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

спасибо.

2 ответов


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

@Column(columnDefinition="TEXT")

или

@Column(columnDefinition="LONGTEXT")

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


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

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