jOOQ用户之间的一个常见问题是,如何将a<forcedType>应用于代码生成器中的存储函数返回类型。该手册指定了<includeExpression>匹配合格或不合格标识符的代码,因此请使用以下HSQLDB函数:
<forcedType>
<includeExpression>
CREATE FUNCTION stored_functions.f_1 (p_i int) RETURNS int BEGIN ATOMIC RETURN p_i; END
该函数的参数可以强制String使用:
String
<forcedType> <userType>java.lang.String</userType> <converter> org.jooq.Converter.ofNullable(Integer.class, String.class, Object::toString, Integer::valueOf) </converter> <includeExpression>(?i:f_1\.p_i)</includeExpression> </forcedType>
这将产生以下Parameter规范:
Parameter
/** * The parameter <code>STORED_FUNCTIONS.F_1.P_I</code>. */ public static final Parameter<String> P_I = Internal.createParameter( "P_I", org.jooq.impl.SQLDataType.INTEGER, false, false, org.jooq.Converter.ofNullable(Integer.class, String.class, Object::toString, Integer::valueOf) );
如何对返回值做同样的事情?
有一个可以使用的综合参数名称。它称为return_value,它也是生成的Parameter文字的名称。
return_value
以下规范将相同的转换器应用于P_I参数和RETURN_VALUE:
P_I
RETURN_VALUE
<forcedType> <userType>java.lang.String</userType> <converter> org.jooq.Converter.ofNullable(Integer.class, String.class, Object::toString, Integer::valueOf) </converter> <includeExpression>(?i:f_1\.p_i|return_value)</includeExpression> </forcedType>
这将产生以下Parameter规格:
/** * The parameter <code>STORED_FUNCTIONS.F_1.RETURN_VALUE</code>. */ public static final Parameter<String> RETURN_VALUE = Internal.createParameter( "RETURN_VALUE", org.jooq.impl.SQLDataType.INTEGER, false, false, org.jooq.Converter.ofNullable(Integer.class, String.class, Object::toString, Integer::valueOf) ); /** * The parameter <code>STORED_FUNCTIONS.F_1.P_I</code>. */ public static final Parameter<String> P_I = Internal.createParameter( "P_I", org.jooq.impl.SQLDataType.INTEGER, false, false, org.jooq.Converter.ofNullable(Integer.class, String.class, Object::toString, Integer::valueOf) );