繁体   English   中英

从JOOQ的UNION中删除“从双重选择*”

[英]Remove “Select * from dual” from UNION in JOOQ

这是代码:

SelectQuery<Record> resultQuery = dslContext.selectQuery();
for(int floor : floors) {
    method1(resultQuery,floor);
}

接着:

method1(SelectQuery<Record> resultQuery,int floor){
    SelectQuery<Record> query = dslContext.selectQuery();
    /*
     Now I am creating subqueries for parameter floor by adding condition 
     in above created query 
    */

    resultQuery.union(query);
}

问题是,在最终查询(resultQuery)中,我附加了“从双重选择*”。 之所以添加,是因为我将“ resultQuery”创建为空。

有什么方法可以替换或从最终查询中删除“从双选中选择*”。

谢谢

命令式:

SelectQuery<Record> result = null;
for (int floor : floors) {
    result = method1(result, floor);
}

带有:

SelectQuery<Record> method1(SelectQuery<Record> result, int floor) {
    SelectQuery<Record> query = dslContext.selectQuery();

    /* your logic ... */

    if (result == null)
        return query;
    else
        return result.union(query);
}

功能风格

Optional<Select<Record>> result =
floors.stream()
      .map(this::method2)
      .reduce(Select::union)

带有:

Select<Record> method2(int floor) {
    SelectQuery<Record> query = dslContext.selectQuery();

    /* your logic ... */

    return query;
}

也可以看看:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM