jOOQ и автогенерация, как избежать записей UDT внутри таблицы POJOs
я определяю тип T вид V в базе данных PostgreSQL. 
CREATE TYPE my_type AS
(
  mt_column1 smallint NOT NULL
);
CREATE VIEW my_view
AS SELECT
   some_column_id integer
   ARRAY(SELECT
      ROW(an_int)::my_type
      FROM a_table
   ) AS my_view_types
  FROM a_regular_table 
  WHERE my_condition_hold);
использование генерации кода на релиз 3.7 я получаю оба класса записи UDT MyTypeRecord и класс записи таблицы MyViewRecord и класс UDT POJO MyType и таблица POJO class MyView.
на MyView сгенерированный класс имеет массив MyTypeRecord.
public class MyView extends Object implements Serializable, Cloneable, IMyView {
    private static final long serialVersionUID = 1984808170;
    private final Long           some_column_id;
    private final MyTypeRecord[] my_view_types;
}
в то время как в POJO я ожидал бы массив POJOs, например:
    private final MyType[] my_view_types;
еще один интересный факт заключается в том, что pojo и запись для типа находятся в udt папка, в то время как для просмотра они находятся в tables папка: возможно, это может помочь найти решение / объяснение.
есть ли способ сделать View преобразование pojo-only во время генерации?
по запросу я приложил рабочий пример, который генерирует записи и POJOs, как я описал. Он поделился с FileDropper в этой ссылка.
я также сообщаю об одном возможном трюке, чтобы избежать этой проблемы, чтобы быть использованным, если вы действительно в отчаянии. Как сообщалось в этом stackoverflow вопрос / ответ, jOOQ даже если мы назначим POJO вместо записи, не сможет автоматически преобразовать массив записей в класс записи MyTypeRecord. Следовательно, вы можете проанализировать массив ROWs в json с помощью функции array_to_json. В моем примере быть:
CREATE VIEW my_view
AS SELECT
   some_column_id integer
   array_to_json(ARRAY(SELECT        
        ROW(an_int)::my_type         
      FROM a_table
   ))::json AS my_view_types
  FROM a_regular_table 
  WHERE my_condition_hold);
это должно быть автоматически преобразовано jOOQ в JSON, если вы зарегистрируетесь этой привязка.
2 ответов
Это ошибка в генераторе кода jOOQ:
https://github.com/jOOQ/jOOQ/issues/5103
Он появляется только в PostgreSQL, при генерации POJOs для таблиц с массивами составного типа. В настоящее время я не вижу альтернативы.
причина, по которой он делает то, что он делает, заключается в том, что View нет PrimaryKey связанный с ним, по крайней мере, не с большинством баз данных, я не могу придумать ни одного, который сообщил бы PrimaryKey для просмотра. 
вы можете указать первичный ключ для генерации, используя либо <syntheticPrimaryKeys> или вы можете использовать <overridePrimaryKeys> как описано в дополнительные настройки генератора раздел руководства.
соответствующие разделы jooq-meta конфигурация:
<!-- A regular expression matching all columns that participate in "synthetic" primary keys,
       which should be placed on generated UpdatableRecords, to be used with
        - UpdatableRecord.store()
        - UpdatableRecord.update()
        - UpdatableRecord.delete()
        - UpdatableRecord.refresh()
       Synthetic primary keys will override existing primary keys. -->
  <syntheticPrimaryKeys>SCHEMA\.TABLE\.COLUMN(1|2)</syntheticPrimaryKeys>
<!-- All (UNIQUE) key names that should be used instead of primary keys on
       generated UpdatableRecords, to be used with
        - UpdatableRecord.store()
        - UpdatableRecord.update()
        - UpdatableRecord.delete()
        - UpdatableRecord.refresh()
        If several keys match, a warning is emitted and the first one encountered will be used.
        This flag will also replace synthetic primary keys, if it matches. -->
  <overridePrimaryKeys>MY_UNIQUE_KEY_NAME</overridePrimaryKeys>