The SQL code is used almost unmodified, except the external reference declarations. These are the source of the second
problematic situation. For each reference that is defined in an external type, a field parameter in the type's constructor is
generated. This is good and bad simultaneously; the strict constructor enforces compile-time validation of each parameter
that is passed to the SQL code and in addition is backed-up by a prepared statement when it is passed onto the query. Its
disadvantage is that the generation scheme is not very practical when one has many parameters, and it is complex to
remember their order, when the external type is actually used with the Java code. The example code in Section 5.1 points out
to this problem. The resulting generated code of InsertUserQuery type has five constructor parameters.