我当前的jooq-codegen-maven配置将所有tinyint(1)字段映射到java的布尔值:
<forcedTypes>
<forcedType>
<name>BOOLEAN</name>
<types>(?i:TINYINT)</types>
</forcedType>
</forcedTypes>问题是,在某些情况下,DB包含标记为tinyint(3)的列,不应将其视为布尔列,而应将其视为实际的int。不幸的是,我找不到任何例子,docs有一些东西,但它并没有真正对我起作用:
<forcedType>
<name>BOOLEAN</name>
<types>TINYINT\(1\)</types>
</forcedType>发布于 2018-08-06 07:17:02
从jOOQ 3.12开始
我们已经实现了对从代码生成器中的显示宽度中读取数字MySQL的支持。您可以使用以下方法进行匹配:
<forcedType>
<name>BOOLEAN</name>
<includeTypes>
(?i:(TINY|SMALL|MEDIUM|BIG)?INT(UNSIGNED)?\(1\))
</includeTypes>
</forcedType>这在这篇博客文章中有记载:https://blog.jooq.org/2019/09/27/how-to-map-mysqls-tinyint1-to-boolean-in-jooq/
这是用:https://github.com/jOOQ/jOOQ/issues/7719实现的。
直到jOOQ 3.11
在jOOQ 3.12之前,jOOQ代码生成器没有为<types/>正则表达式考虑像TINYINT这样的类型的显示宽度,只是因为它只读取INFORMATION_SCHEMA.DATA_TYPE (不包含此信息),而不读取INFORMATION_SCHEMA.COLUMN_TYPE (确实读取)。
如果升级到3.12不是一个选项,您可以:
<forcedType/>规范中的所有布尔类型INFORMATION_SCHEMA.COLUMN_TYPE以生成需要强制键入BOOLEAN的一组列https://stackoverflow.com/questions/51694152
复制相似问题