【发布时间】:2019-09-13 22:06:57
【问题描述】:
我需要使用 JOOQ SQL 解析器获取 select 中的列列表。在下面的示例中,它将返回包含两个条目的列表:“sk”和“aa”。调试程序我可以在Query.select 字段中看到列列表,但我在Query 类中找不到检索它们的方法。如何获取列的列表?
【问题讨论】:
标签: jooq
我需要使用 JOOQ SQL 解析器获取 select 中的列列表。在下面的示例中,它将返回包含两个条目的列表:“sk”和“aa”。调试程序我可以在Query.select 字段中看到列列表,但我在Query 类中找不到检索它们的方法。如何获取列的列表?
【问题讨论】:
标签: jooq
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 获取值,因为我不确定要转换哪个类。