Хранить строки произвольной длины в 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?
Спасибо.
Ответы
Ответ 1
Я бы рекомендовал пропустить аннотацию @Lob и использовать функцию columnDefinition следующим образом:
@Column(columnDefinition="TEXT")
или
@Column(columnDefinition="LONGTEXT")
Посмотрите, помогает ли это просматривать данные во время просмотра самой базы данных.
Ответ 2
Используйте определение @LOB, это правильно. Таблица хранит OID в каталогах → postegreSQL- > tables → pg_largeobject table.
Двоичные данные хранятся здесь эффективно, и JPA будет правильно выводить данные и хранить их для вас с этим в качестве детали реализации.