首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >强制布尔类型与jOOQ引发NPE

强制布尔类型与jOOQ引发NPE
EN

Stack Overflow用户
提问于 2016-05-09 23:47:04
回答 1查看 211关注 0票数 2

在使用jOOQ 3.7为我们的Oracle数据库生成类时,我尝试对BOOLEAN使用“强制类型”。

表格如下所示:

代码语言:javascript
复制
CREATE TABLE outable_name
(
  id INTEGER NOT NULL,
  -- ...
  some_boolean_field INTEGER DEFAULT 0  NOT NULL
);

要生成Java类,需要使用Gradle。相关部分如下所示:

代码语言:javascript
复制
database() {
  name('org.jooq.util.oracle.OracleDatabase')
  inputSchema(properties.getProperty('db.user'))
  includes('.*')   
  forcedTypes() {
    forcedType() {
      name('BOOLEAN')
      expression('some_boolean_field')
      types('.*')
    }
  }
}

当使用info-output运行gradle-task时,抛出以下错误:

代码语言:javascript
复制
Error while generating table record ***.*** (obfuscated)
java.lang.NullPointerException
        at java.util.regex.Matcher.getTextLength(Matcher.java:1283)
        at java.util.regex.Matcher.reset(Matcher.java:309)
        at java.util.regex.Matcher.<init>(Matcher.java:229)
        at java.util.regex.Pattern.matcher(Pattern.java:1093)
        at org.jooq.util.AbstractTypedElementDefinition.mapDefinedType(AbstractTypedElementDefinition.java:174)
        at org.jooq.util.AbstractTypedElementDefinition.getType(AbstractTypedElementDefinition.java:114)
        at org.jooq.util.DefaultColumnDefinition.getType(DefaultColumnDefinition.java:51)
        at org.jooq.util.JavaGenerator.refRowType(JavaGenerator.java:1241)
        at org.jooq.util.JavaGenerator.generateRecord(JavaGenerator.java:838)
        at org.jooq.util.JavaGenerator.generateRecord(JavaGenerator.java:797)
        at org.jooq.util.JavaGenerator.generateRecord(JavaGenerator.java:785)
        at org.jooq.util.JavaGenerator.generateRecords(JavaGenerator.java:772)
        at org.jooq.util.JavaGenerator.generate(JavaGenerator.java:327)
        at org.jooq.util.JavaGenerator.generate(JavaGenerator.java:267)
        at org.jooq.util.GenerationTool.run(GenerationTool.java:434)
        at org.jooq.util.GenerationTool.generate(GenerationTool.java:180)
        at org.jooq.util.GenerationTool$generate.call(Unknown Source)
        at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)
        at ...
EN

回答 1

Stack Overflow用户

发布于 2016-05-11 15:50:52

invokeMethod直接调用"name“

代码语言:javascript
复制
database() {
  name('org.jooq.util.oracle.OracleDatabase')
  inputSchema(properties.getProperty('db.user'))
  includes('.*')   
  forcedTypes() {
    forcedType() {
      delegate.invokeMethod('name', [
                                      'BOOLEAN'
                                    ]
      )
     expression('.*\\.is_.*|.*\\.has_.*')
     types('CHAR\\(1\\)')
    }
  }
}

Groovy MarkupBuilder name conflict中的说明

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37120057

复制
相关文章

相似问题

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