jOOQ und Autogeneration, wie man UDT-Records in Tabelle POJOs vermeidet

Ich definiere einen TypT und ein BlickV in einer PostgreSQL-Datenbank.

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

Mit der Codegenerierung aufrelease 3.7 Ich bekomme beide eine UDT-RekordklasseMyTypeRecord und eine TabellendatensatzklasseMyViewRecord und die UDT POJO KlasseMyType und Tabelle POJO KlasseMyView.

DasMyView generierte Klasse hat ein Array vonMyTypeRecord.

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

ährend ich in einem POJO bin, würde ich eine Reihe von POJOs erwarten,

    private final MyType[] my_view_types;

Eine weitere interessante Tatsache ist, dass das Pojo und der Datensatz für den Typ in der @ siudt Ordner, während sie für die Ansicht in der @ sitables Ordner: Vielleicht kann dies helfen, eine Lösung / Erklärung zu finden.

Gibt es eine Möglichkeit, das @ zu machView eine reine Pojo-Konvertierung zur Generierungszeit?

uf Anfrage habe ich ein Arbeitsbeispiel angehängt, das die von mir beschriebenen Datensätze und POJOs generiert. Sie wird mit FileDropper unter @ geteilDie Verknüpfung

Ich berichte auch über einen möglichen Trick, um dieses Problem zu vermeiden, der verwendet werden kann, wenn Sie wirklich verzweifelt sind. Wie berichtetin this stackoverflow question / answer, jOOQ, auch wenn wir anstelle des Datensatzes ein POJO zuweisen, kann das Array von Datensätzen nicht automatisch in die Datensatzklasse @ konvertiert werdeMyTypeRecord. Daher können Sie das Array von @ analysierROWs bis json mit der Funktionarray_to_json. In meinem Beispiel wäre:

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

Dies sollte automatisch von JOOQ in einen JSON konvertiert werden, wenn Sie sich registrierenDie Bindung.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage