Генератор кода JOOQ пропускает класс, содержащий поле JsonNode

В настоящее время я работаю над проектом, который использует JOOQ для транзакций sql с Postgres. Но в одной из моделей есть поле типа JsonNode (jsonb в postgres). Генератор кода JOOQ не поддерживает это, поэтому я добавил пользовательскую привязку, которая должна была решить проблему, но даже несмотря на то, что привязка загружена, она никогда не применяется к конкретной модели, и генератор просто пропускает эту модель.

Мой стек (в демо): JOOQ Hibernate Jackson.

Демонстрационный проект предоставляет две модели, одну действительную и одну с JsonNode, чтобы показать, что генератор действительно работает и сканирует модели, но пропускает модель, содержащую поле JsonNode.

Я уже пробовал различные имена в поле выражения forceType: .simplename. , .SIMPLENAME., .impl., . IMPL., .json., .JSON., .jsonb., .JSONB. ,

попытался установить настройку sql в привязке к ::json , ::jsonb, ::_jsonb

пытался установить тип регистра на Types.VARCHAR, Types.OTHER, Types.JAVA_OBJECT

Следующий репозиторий https://github.com/mmichailidis/JooqDemo содержит проект, воспроизводящий проблему.

Ожидаемый результат состоит в том, что обе модели будут сгенерированы в созданной папке jooq, но будет сгенерирована только та, у которой нет JsonNode.


person Michael Michailidis    schedule 06.06.2019    source источник
comment
Спасибо за ваш вопрос. Для будущих пользователей будет полезно, если вы сможете опубликовать весь свой pom.xml прямо здесь, в этом вопросе. Ваш репозиторий может стать мертвой ссылкой всего через несколько месяцев, и этот вопрос не будет полезен другим посетителям Stack Overflow.   -  person Lukas Eder    schedule 06.06.2019


Ответы (1)


Вы используете JPADatabase: https://www.jooq.org/doc/latest/manual/code-generation/codegen-jpa

Как это реализовано в настоящее время, вы не можете обрабатывать свои сущности с помощью JPADatabase в тех же фазах Maven, что и сами сущности компилируются. Они еще недоступны в пути к классам JPADatabase. Вы должны извлечь свои объекты в отдельный проект и сгенерировать код jOOQ на втором этапе.

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

person Lukas Eder    schedule 06.06.2019
comment
Спасибо за ваш ответ. Первоначальный проект был многомодульным и следовал инструкциям из статьи, на которую вы ссылаетесь. Теперь я обновил демонстрационный проект, чтобы он соответствовал оригиналу с точки зрения структуры модулей. К сожалению, проблема сохраняется. Ничего не было установлено в локальном репозитории, и все тесты выполнялись с mvn clean package. - person Michael Michailidis; 06.06.2019