[英]Build Left Join Query with JOOQ using two Tables from two Different Databases
我们正在使用JOOQ执行所有查询。
现在我们需要使用JOOQ创建左联接查询,这将使来自两个不同数据库的两个表左联接
示例本机SQL查询(贝洛),我们需要使用JOOQ框架而不是本机sql来构建此查询。 到目前为止,我还没有找到任何解决方案,JOOQ可能不支持此功能
SELECT *
FROM `library`.`books`
LEFT JOIN `library2`.`author2` ON `library`.`books`.`author_id` = `library2`.`author2`.`id`
如果要使用两个不同的数据库/架构,则需要相应地配置代码生成器。 您可以指定一些输入模式,如此处记录 :
<configuration>
<generator>
<database>
<schemata>
<schema>
<inputSchema>library</inputSchema>
</schema>
<schema>
<inputSchema>library2</inputSchema>
</schema>
</schemata>
</database>
</generator>
</configuration>
备择方案:
<inputSchema/>
inputSchema <inputSchema/>
配置,而jOOQ的代码生成器将只生成所有可用的模式。 jOOQ手册建议从全局生成的Tables
类引用表 。 这对于单模式设置非常有效。 查询多个模式时,可能值得参考所生成的模式实例中的表。 这是编写查询的方法:
import static com.example.generated.library .Library .LIBRARY ;
import static com.example.generated.library2.Library2.LIBRARY2;
// ^^^^^^^^ ^^^^^^^^ ^^^^^^^^
// | | |
// Package per schema -----------------+ | |
// Schema class --------------------------+ |
// Schema instance -----------------------------------+
接着:
DSL.using(configuration)
.select()
.from(LIBRARY.BOOKS)
.leftJoin(LIBRARY2.AUTHOR2)
.on(LIBRARY.BOOKS.AUTHOR_ID.eq(LIBRARY2.AUTHOR2.ID))
.fetch();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.