首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JOOQ:根据长度将tinyint映射为布尔值

JOOQ:根据长度将tinyint映射为布尔值
EN

Stack Overflow用户
提问于 2018-08-05 12:06:09
回答 1查看 1.2K关注 0票数 1

我当前的jooq-codegen-maven配置将所有tinyint(1)字段映射到java的布尔值:

代码语言:javascript
复制
<forcedTypes>
    <forcedType>
        <name>BOOLEAN</name>
        <types>(?i:TINYINT)</types>
    </forcedType>
</forcedTypes>

问题是,在某些情况下,DB包含标记为tinyint(3)的列,不应将其视为布尔列,而应将其视为实际的int。不幸的是,我找不到任何例子,docs有一些东西,但它并没有真正对我起作用:

代码语言:javascript
复制
<forcedType>
   <name>BOOLEAN</name>
   <types>TINYINT\(1\)</types>
</forcedType>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-06 07:17:02

从jOOQ 3.12开始

我们已经实现了对从代码生成器中的显示宽度中读取数字MySQL的支持。您可以使用以下方法进行匹配:

代码语言:javascript
复制
<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的一组列
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51694152

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档