当前位置:  开发笔记 > 编程语言 > 正文

使用jOOQ 3.6 +,纯SQL和javac编译器进行慢速编译

如何解决《使用jOOQ3.6+,纯SQL和javac编译器进行慢速编译》经验,为你挑选了1个好方法。



1> Lukas Eder..:
说明

在jOOQ 3.6中(首次出现此问题时),DSL.field()API看到22个新的重载,它们使用不同Row类型作为参数:

DSL.field(Row1)

DSL.field(Row2)

DSL.field(Row3)

...

看来,通过上面这个特定的API用法,当javac编译器试图在所有可能的重载中找到最具体的重载时,新的重载会导致很多麻烦.以下解决方法立即编译:

固定

一个修复程序下发行方式3.9.0,3.8.1,3.7.4,3.6.5,从公共API再次删除这些方法,并提供改名替代品不会造成任何超载的问题.

解决方法

1.帮助编译器选择最具体的DSL.field()重载

import static org.jooq.impl.DSL.field;

import org.jooq.Field;
import org.jooq.SQLDialect;
import org.jooq.impl.DSL;

public class Test {
    public void method() {
        Field f1 = field("client.id");
        Field f2 = field("client_id");
        DSL.using(SQLDialect.MYSQL)
           .select()
           .where(DSL.trueCondition())
           .and(f1.eq(f2))
           .and(f1.eq(f2))
           .and(f1.eq(f2))
           .and(f1.eq(f2))
           .and(f1.eq(f2))
           .and(f1.eq(f2))
           .and(f1.eq(f2))
           .and(f1.eq(f2))
           .and(f1.eq(f2))
           .and(f1.eq(f2))
        ;
    }
}


2.完全防止and()方法上下文中的目标类型推断

import static org.jooq.impl.DSL.field;

import org.jooq.Condition;
import org.jooq.SQLDialect;
import org.jooq.impl.DSL;

public class Test {
    public void method() {
        Condition condition = field("client.id").eq(field("client_id"));
        DSL.using(SQLDialect.MYSQL)
           .select()
           .where(DSL.trueCondition())
           .and(condition)
           .and(condition)
           .and(condition)
           .and(condition)
           .and(condition)
           .and(condition)
           .and(condition)
           .and(condition)
           .and(condition)
           .and(condition)
        ;
    }
}
更多信息

这实际上已在Stack Overflow上报告过:

对慢速编译进行故障排除

http://bugs.java.com/bugdatabase/view_bug.do?bug_id=8086048

在jOOQ用户组中也讨论过它:

https://groups.google.com/forum/#!topic/jooq-user/vuaG9d9krDk

https://groups.google.com/forum/#!topic/jooq-user/grv6Wu_sFtA

推荐阅读
殉情放开那只小兔子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有