【发布时间】:2021-12-26 19:17:26
【问题描述】:
我正在使用 jOOQ 代码生成器从 Oracle 包中调用查询。查询的参数之一是字符串数组。
第一个问题是代码生成器使用Object作为参数的类型。生成的文档告诉我使用明确的Binding,但没有说明如何或在哪里。我假设我必须在GenerationTool 上配置一些东西。我该怎么做?
第二个问题是要传递什么实际值。我试过String[] 和List<String>,但都不管用。然后我最终编写了自己的简单类:
public class MyStringArray extends ArrayRecordImpl<String> {
public MyStringArray() {
super(MySchema.MY_SCHEMA, "ARR_STR", SQLDataType.VARCHAR(255));
}
}
这行得通,但感觉就像一个 hack。我该如何以“好”的方式做到这一点?
【问题讨论】:
-
1) 您使用的是什么 jOOQ 和 Oracle 版本? 2)你的
ARR_STR类型在DDL中的定义是什么? -
jOOQ 3.15.4,Oracle 19。我明天回去工作时会检查 2)。
-
@LukasEder 感谢您的提示!在搜索 ARR_STR 类型的 DDL 时,我在另一个模式中找到了它,这不是由生成器完成的。我添加了它,并生成了一条记录,并由生成的查询使用。这样就解决了这两个问题。
-
很高兴听到这个消息,我怀疑这可能是原因。我们可能应该改进生成的 Javadoc 以暗示这是一个可能的解决方案,而不是手动实现
Binding:github.com/jOOQ/jOOQ/issues/12630。您可以在这里用您的发现回答您自己的问题,以帮助未来的访问者...