在使用jOOQ 3.7为我们的Oracle数据库生成类时,我尝试对BOOLEAN使用“强制类型”。
表格如下所示:
CREATE TABLE outable_name
(
id INTEGER NOT NULL,
-- ...
some_boolean_field INTEGER DEFAULT 0 NOT NULL
);要生成Java类,需要使用Gradle。相关部分如下所示:
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时,抛出以下错误:
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 ...发布于 2016-05-11 15:50:52
用invokeMethod直接调用"name“
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\\)')
}
}
}https://stackoverflow.com/questions/37120057
复制相似问题