使用 jOOQ 将字符串数组传递给 Oracle 查询

Pass String array to Oracle query using jOOQ

我正在使用 jOOQ 代码生成器从 Oracle 包调用查询。查询的参数之一是字符串数组。

第一个问题是代码生成器使用 Object 作为参数类型。生成的文档告诉我使用明确的 Binding,但没有说明如何使用或在何处使用。我假设我必须在 GenerationTool 上配置一些东西。我该怎么做?

第二个问题,传递什么实际值。我试过 String[]List<String>,但都不起作用。然后我最终写了我自己的简单 class:

public class MyStringArray extends ArrayRecordImpl<String> {
  public MyStringArray() {
    super(MySchema.MY_SCHEMA, "ARR_STR", SQLDataType.VARCHAR(255));
  }
}

这行得通,但感觉像是破解。我如何以“好”的方式做到这一点?

用户定义类型发生这种情况的最常见原因是该类型与引用它的例程处于不同的架构中,或者使用 <excludes> 明确排除了它。在这两种情况下,您都可以:

  • 按照 Javadoc 中的提示进行操作,并实现您自己的绑定
  • 好多了:在代码生成配置中包含引用类型

生成的 Javadoc 可以改进,因为 jOOQ 知道该类型是用户定义的类型并且生成输出中缺少它。我创建了一个问题来改进它:https://github.com/jOOQ/jOOQ/issues/12630