java - JOOQ:根据其长度将 tinyint 映射到 boolean

标签 java mysql sql jooq

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

<forcedTypes>
    <forcedType>
        <name>BOOLEAN</name>
        <types>(?i:TINYINT)</types>
    </forcedType>
</forcedTypes>

问题是,在某些情况下,数据库包含标记为 tinyint(3) 的列,不应将其视为 boolean 值,而应将其视为一些实数。不幸的是我找不到任何例子,文档有一些东西但它对我来说并没有真正起作用:

<forcedType>
   <name>BOOLEAN</name>
   <types>TINYINT\(1\)</types>
</forcedType>

最佳答案

从 jOOQ 3.12 开始

我们实现了对读取数字 display width 的支持来自代码生成器中的 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 代码生成器没有考虑 display widthTINYINT 这样的类型对于 <types/>正则表达式,仅仅因为它只读取 INFORMATION_SCHEMA.DATA_TYPE (不包含此信息),而不是 INFORMATION_SCHEMA.COLUMN_TYPE (确实如此)。

如果无法升级到 3.12,您可以:

关于java - JOOQ:根据其长度将 tinyint 映射到 boolean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51694152/

相关文章:

java - 使用 BorderLayout 将图形添加到 JFrame

java - javafx 中是否有任意形状的 "fill"函数?

java - 使用 JNDI 为 Hibernate 注册 MySQL 数据源

java - BIRT 能否将一张表的输出用于另一张表——不同的数据集?

mysql - 按文字排序 SQL 查询

java - 如何在java中动态扩展一个类?

php - Android httpPost(URL) -> 403 禁止

php - 我的 $_SESSION 变量只获取数组中每个索引的第一个字母

sql - 需要有关 Oracle SQL 查询错误的帮助

sql - 在 Rails 和 Postgresql 中查找带空格和不带空格的单词