PostgreSQL下JOOQ如何配置forceType实现BigInteger转BigDecimal
前置修正说明
你提供的自定义转换器存在两处可优化点,建议先调整:
- 类名与构造方法名不匹配,需统一,示例统一类名为
BigIntToBigDecConverter,后续配置以该类名为准 to方法中直接取intValue()会存在精度丢失风险,建议修改为:
@Override public BigInteger to(BigDecimal userObject) { return userObject.toBigInteger(); }
JOOQ代码生成XML forceType配置
针对myTable表的myColumn字段单独适配的配置如下,放在代码生成配置的<database>节点下的<forcedTypes>节点中:
<forcedType> <userType>java.math.BigDecimal</userType> <converter>com.yourpackage.BigIntToBigDecConverter</converter> <expression>public\.myTable\.myColumn</expression> </forcedType>
注意将
com.yourpackage替换为你实际存放转换器类的包路径,PostgreSQL默认schema为public,如果你自定义了schema请同步替换。
可选配置扩展
如果需要调整匹配范围,可以修改匹配规则:
- 全局匹配所有PostgreSQL BIGINT类型转换为BigDecimal:替换
<expression>节点为<types>BIGINT</types> - 匹配所有表中名为
myColumn的BIGINT字段:将<expression>值修改为.*\.myColumn
内容的提问来源于stack exchange,提问作者moovon
相关产品推荐
相关产品推荐

