В частности, меня интересует использование типа PostgreSQLs json
.
Ядро проблемы, похоже, состоит в том, что внутри 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
Достаточно честный, я полагаю.
Просматривая документы EclipseLink, кажется, что применимые настройки (Преобразования, Нативные Запросы, Преобразователи) зависят от данных, состоящих из поддерживаемых сопоставлений (числа, даты, строки и т.д.), поэтому это делает довольно неудобным обходитесь с использованием определенных типов поставщиков.
Основная причина, по которой это так расстраивает, заключается в том, что тип json
в posgresql выражается так же, как text/varchar, и я верю (на данный момент, но не навсегда) является просто псевдонимом этого типа, поэтому драйвер более чем способный передать это, это просто правила проверки на моем пути.
В терминах решения я не против потери переносимости (с точки зрения агностики базы данных и использования специфических для поставщика типов), но просто хочу, чтобы решение позволяло мне использовать тип json
как атрибут на обычном JPA Entity и сохранить все другое поведение, к которому он привык (генерация схемы, слияние, сохранение, транзакционный код