当前位置: 首页 > 知识库问答 >
问题:

从JOOQ解析器结果获取表/列元数据

百里疏珂
2023-03-14

使用JOOQ parser API,我能够解析以下查询,并从生成的查询对象获得参数映射。从这里,我可以看出有一个参数,它的名字是“something”。

解析器API是否有获取与每个参数关联的表/列元数据的方法?

String sql = "SELECT A.FOO FROM BAR A WHERE A.BAZ = :something";

DSLContext context = DSL.using...
Parser parser = context.parser();
Query query = parser.parseQuery(sql);


Map<String, Param<?>> params = query.getParams();

共有1个答案

濮阳振
2023-03-14

在JOOQ3.11中,可以用来访问内部表达式树的SPI是visitlistenerSPI,在解析之前必须将其附加到context.configuration()。然后,无论何时遍历表达式树,例如在query.getparams()调用时,都会调用它。

然而,有相当多的手动管道需要做。例如,visitlistener将只看到a.baz作为列引用,而不直接知道a是重命名的表bar。当您访问栏一个表达式时,您必须跟踪这种重命名。

 类似资料:
  • 问题内容: 使用JOOQ解析器API,我可以解析以下查询,并从生成的Query对象获取参数映射。由此,我可以知道有一个参数,它的名称是“ something”。 但是,我还无法弄清楚如何确定参数“ something”是否已分配给名为“ BAZ”的列,并且该列是表“ BAR”的一部分。 解析器API是否可以获取与每个参数关联的表/列元数据? 问题答案: 从jOOQ 3.11开始,可用于访问内部表达

  • 我的数据库中有一个小特例,我需要从两个具有一对一关系的不同表中获取数据,以获得有用的结果。获取看起来像这样: 当然,我在实际代码中使用了-这只是一个示例。我的问题是是否以及如何将jOOQ中获取的数据写入POJO。我不确定是否有办法让jOOQ为我生成这个POJO,但如果我必须自己编写它,我假设我需要像适配器这样的东西以及像作为数据类型的转换器。 我看到有可能出现RecordMapperProvide

  • 我一直在使用模式。方法来获取模式中的表列表,但今天我发现该方法返回的是执行jOOQ代码生成时存在的表列表,而不是此时存在的表。 我的具体用例是随着时间的推移创建表(自动分区),我们的Java服务对它们执行一些操作。 在jOOQ中有没有办法从DB中获取当前的表列表? 我可以求助于查询信息模式。直接使用表,但我更愿意重用来自jOOQ的方法(如果可用的话)。

  • 问题内容: 我像这样在Redis中存储列表: 然后我像这样返回列表: 我得到这样的东西: 如何将其转换为实际的Python列表? 另外,我看不到其中定义的任何内容有帮助吗?我想念什么吗? 可能的解决方案(我认为很糟糕)可以是: 更新 好的,所以我找到了解决方案。 实际上,该函数希望所有列表项都作为参数传递,而不是作为单个列表传递。来自redis-py来源的功能签名使其清晰可见… 我在上面做的是发送

  • 我正在使用hibernate 4和Spring 3。 我有5个表,每个表映射一个实体类。现在,如果我必须从1个表中选择列,我将执行以下操作: 此结果中的此值将为EmployeeEntity类型。 或者我也可以使用标准。 现在我的要求是我必须从所有5个表中得到结果。每个表中有1-2列。 早些时候,它是一个1表,所以我得到了一个实体,现在我得到了5个表的结果,所以如何在实体中映射它。 List res