J'évalue actuellement jOOQ. Et nous avons des problèmes avec la création de déclarations de jointure, comme ceci:Génération de code jOOQ: forcedType
create.select()
.from(TABLEA, TABLEB)
.where(TABLEA.ID.equal(TABLEB.TABLEA_ID));
En raison d'une incompatibilité de type. Dans la base de données (Oracle 11g) TABLEA est NUMBER(22,0)
, mais TABLEB.TABLEA_ID est NUMBER(7,0)
.
Par conséquent, jOOQ génère pour la première propriété un champ BigInteger
, mais pour ce dernier un champ Integer
.
J'ai donc essayé de générer tous NUMBER(.*,0)
avec BigInteger
avec le code XML suivant:
<forcedTypes>
<forcedType>
<name>DECIMAL_INTEGER</name>
<expression>.*</expression>
<types>NUMBER(.*,0)</types>
</forcedType>
</forcedTypes>
</database>
Mais cela ne fonctionne pas. J'ai toujours des champs avec Integer
comme type. Alors, que puis-je faire à ce sujet, en plus de changer le type de colonne de la table?
Malheureusement votre regex ne fonctionnait pas non plus. Cela a fonctionné pour 'NUMBER', mais il utiliserait aussi' BigInteger' pour les types 'NUMBER' avec échelle. –
@ Angelo.Hannes: Mon mauvais, je suis désolé de la confusion. [# 2485] (https://github.com/jOOQ/jOOQ/issues/2486) n'est pas encore implémenté dans jOOQ 3.4, ce qui explique pourquoi cela ne fonctionne pas. Le manuel est faux ... Je suppose que vous devrez recourir à l'une des conversions explicites ci-dessus, ou écrire une regex correspondant à toutes les colonnes pertinentes de votre base de données - par exemple. toutes les colonnes se terminant par '_ID'? –
Merci beaucoup. Je vais essayer l'une des solutions de contournement. –