В частности, меня интересует использование PostgreSQLs json
.Возможны ли типы JPA (EclipseLink)?
Ядро проблемы похоже, что внутри Eclipselink нет внутреннего отображения до json
. Таким образом, используя наивный подход с:
@Column(name = "json", columnDefinition = "json")
public String getJson() {
return json;
}
... и пытается вставить объект, я получаю исключение:
Internal Exception: org.postgresql.util.PSQLException: ERROR: column "json" is of type json but expression is of type character varying
Fair достаточно, я полагаю.
Просматривая документы EclipseLink, кажется, что применимые настройки (Преобразования, Нативные запросы, Преобразователи) зависят от данных, состоящих из поддерживаемых сопоставлений (числа, даты, строки и т. Д.), Поэтому он делает это довольно неудобным чтобы обойти использование определенных типов поставщиков.
Основная причина, по которой это так расстраивает то, что json
Тип в posgresql выражается так же, как текст/varchar, и я верю (на данный момент, но не навсегда) является просто псевдонимом этого типа - поэтому драйвер больше чем способна передать это, это просто правила проверки на моем пути.
С точки зрения решения, я не против потери переносимости (с точки зрения агностики базы данных и использования специфических для конкретного поставщика типов), но просто хочу получить решение, которое позволяет мне использовать тип json
как атрибут на нормальном JPA Entity и сохранить все другое поведение, к которому он привык (генерация схемы, слияние, постоянство, транзакционный код
Да, отличный вопрос! – Jmoney38