jOOQ e geração automática, como evitar registros UDT dentro da tabela POJOs

Eu defino um tipoT e uma vistaV em um banco de dados 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);

Usando a geração de código emrelease 3.7 Eu recebo uma classe de registro UDTMyTypeRecord e uma classe de registro de tabelaMyViewRecord e a classe UDT POJOMyType e classe de mesa POJOMyView.

oMyView classe gerada tem uma matriz deMyTypeRecord.

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;
}

enquanto em um POJO eu esperaria uma variedade de POJOs, por exemplo:

    private final MyType[] my_view_types;

Outro fato interessante é que o pojo e o registro para o tipo estão noudt pasta, enquanto na exibição eles estão notables pasta: talvez isso ajude a encontrar uma solução / explicação.

Existe uma maneira de fazer oView uma conversão apenas de pojo no tempo de geração?

Mediante solicitação, anexei um exemplo de trabalho que gera os registros e POJOs como descrevi. É compartilhado com o FileDropper emesta ligação.

Também relato um possível truque para evitar esse problema, a ser usado se você estiver realmente desesperado. Como reportadonesta pergunta / resposta stackoverflow, jOOQ, mesmo se atribuirmos um POJO em vez do registro, não será possível converter automaticamente a matriz de registros na classe de registroMyTypeRecord. Portanto, você pode analisar a matriz deROWs para json usando a funçãoarray_to_json. No meu exemplo seria:

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);

Isso deve ser convertido automaticamente pelo jOOQ em um JSON se você se registraresta obrigatório.

questionAnswers(2)

yourAnswerToTheQuestion