1
我有地圖結合值的:jOOQ - 多個綁定
final Map<String, Object> values = ...;
之前執行查詢,我通過結合參數循環並且它的值綁定如下:
final ResultQuery<Record> q = ...;
for (final Param p : q.getParams().values()) {
if (p.getParamName() != null) {
q.bind(p.getParamName(), values.get(p.getParamName()));
}
}
當相同的結合多次使用,這似乎失敗:
final ResultQuery<Record> q = create.select().from(DSL.table("my_table"))
.where((DSL.field("identifier").eq(DSL.param("binding"))
.and(DSL.field("identifier").eq(DSL.param("binding")))));
... code above ...
create.fetch(q);
在生成的查詢,僅綁定之一被填寫。另一個是null
。
是否有其他方法嗎?相同的綁定參數只能使用一次,或者這是一個錯誤?
(我知道這個查詢請求也沒有太大的意義,它僅僅用於演示的問題。)
,如果我們能夠做到,而不是下面的問題可能是解決了,但它是不可能的,因爲getParams()
回報Param<?>
而不是Param<Object>
:
for (final Param p : q.getParams().values()) {
if (p.getParamName() != null) {
p.bind(values.get(p.getParamName()));
}
}
更新 - 上面的說法是不正確的,因爲getParams()
返回Map<String, Param>
,而不是Map<String, Collection<Param>>
。儘管直接綁定Param
仍然非常有用。