【问题标题】:Getting the list of SQL select columns from JOOQ parser从 JOOQ 解析器获取 SQL 选择列的列表
【发布时间】:2019-09-13 22:06:57
【问题描述】:

我需要使用 JOOQ SQL 解析器获取 select 中的列列表。在下面的示例中,它将返回包含两个条目的列表:“sk”和“aa”。调试程序我可以在Query.select 字段中看到列列表,但我在Query 类中找不到检索它们的方法。如何获取列的列表?

【问题讨论】:

    标签: jooq


    【解决方案1】:

    jOOQ parser API 返回的 Query 对象模型从 jOOQ 3.12 开始不提供任何相应的访问器。不过,此功能计划在下一个次要版本 (3.13) 中使用。

    以下答案为您提供了一个示例,您可以如何使用现有的VisitListener SPI 来实现您的目标:https://stackoverflow.com/a/54006668/1732086

    【讨论】:

    • 谢谢。 VisitListener 对我不起作用,所以我尝试在 apache commons 库中使用反射:java.lang.reflect.Field f = FieldUtils.getField(Query.class, "select", true); 我可以在结果中看到列名,但我无法转换它 如何从 f 获取列表? SelectFieldList 类不是公共的,或者我不能使用它。
    • 我也尝试使用 Field f = Query.class.getDeclaredField("select"); 进行 Java 反射,但无法从 f 获取值,因为我不确定要转换哪个类。
    • 我解决了:我对结果做了一个 toString() 并将其拆分。
    猜你喜欢
    • 2019-05-10
    • 2017-06-09
    • 1970-01-01
    • 2019-09-02
    • 2018-07-23
    • 2022-11-24
    • 1970-01-01
    • 2022-08-18
    相关资源
    最近更新 更多