我只是在select语句包含要求这些表成为查询一部分的字段时才尝试动态添加一些连接到我的JOOQ查询。所以我需要知道给定Field所依赖的表。
通过TableField
TableField.getTable()
很容易Function
。
对Function.getArguments()
来说也很容易 - 使用TableField
我可以递归地遍历函数树,直到我到达所有Function
叶节点。
然而,遗憾的是,{{1}}类是包私有。
我也没有在JOOQ中看到任何可以解决这个问题的静态工具。
不知道是否有办法在生成的sql或偷偷摸摸的反射中使用脏正则表达式。
答案 0 :(得分:1)
"官方"这种SQL转换的方法是使用VisitListener
SPI并挂钩查询呈现生命周期,从SELECT
子句收集所有不同的表,并将它们添加到FROM
条款通过最合适的连接。
这是访问内部Function
类型参数的唯一方法,而不是通过正则表达式或反射来共同破解内容。
你需要照顾这些事情(这可能是不可能的):
FROM
子句中已有的表格,或者您是否必须再次加入该表格?