当前位置: 首页 > 面试题库 >

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

阎枫涟
2023-03-14
问题内容

使用JOOQ解析器API,我可以解析以下查询,并从生成的Query对象获取参数映射。由此,我可以知道有一个参数,它的名称是“ something”。

但是,我还无法弄清楚如何确定参数“ something”是否已分配给名为“ BAZ”的列,并且该列是表“ BAR”的一部分。

解析器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();

问题答案:

从jOOQ
3.11开始,可用于访问内部表达式树的VisitListenerSPI是SPI,context.configuration()解析之前必须将其附加到您的SPI
。然后,只要您遍历该表达式树(例如在调用中),就会query.getParams()调用它。

但是,有很多手动管道需要完成。例如,VisitListener只会将A.BAZ视为列引用,而不会直接知道A已重命名的表BAR。当您访问BAR A表达式时,您将必须跟踪自己的重命名。



 类似资料:
  • 使用JOOQ parser API,我能够解析以下查询,并从生成的查询对象获得参数映射。从这里,我可以看出有一个参数,它的名字是“something”。 解析器API是否有获取与每个参数关联的表/列元数据的方法?

  • 我的数据库中有一个小特例,我需要从两个具有一对一关系的不同表中获取数据,以获得有用的结果。获取看起来像这样: 当然,我在实际代码中使用了-这只是一个示例。我的问题是是否以及如何将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