回答編集履歴

2

typo

2021/07/20 00:55

投稿

shiketa
shiketa

スコア3990

test CHANGED
@@ -10,6 +10,10 @@
10
10
 
11
11
 
12
12
 
13
+ エラーメッセージにもそのように出力されている`... requestkbn IN(CAST(?, ? AS INTEGER))) order by ?]; nested exception is org.postgresql.util.PSQLException`
14
+
15
+
16
+
13
17
  `Set<Integer> rkKbnSet = new HashSet<>();`ということなので、設定する値はInteger型。であれば、キャストは不要なのでは?
14
18
 
15
19
 

1

修正

2021/07/20 00:54

投稿

shiketa
shiketa

スコア3990

test CHANGED
@@ -1 +1,17 @@
1
- rkKbnSet の要素数がふたつあるなら、 `requestkbn IN(CAST(:requestkbn AS INTEGER)))` の部分を `requestkbn IN(CAST(:aa AS INTEGER), CAST(:bb AS INTEGER)))` となるようなSQL文を組み立てて、値はの設定を `.addValue("aa", rkKbnSet.get(0)).addValue("bb", rkKbnSet.get(1))` となるようにすればいいのでは。
1
+ ~~rkKbnSet の要素数がふたつあるなら、 `requestkbn IN(CAST(:requestkbn AS INTEGER)))` の部分を `requestkbn IN(CAST(:aa AS INTEGER), CAST(:bb AS INTEGER)))` となるようなSQL文を組み立てて、値はの設定を `.addValue("aa", rkKbnSet.get(0)).addValue("bb", rkKbnSet.get(1))` となるようにすればいいのでは。~~
2
+
3
+
4
+
5
+ 上記は取り消し。内容を訂正します。
6
+
7
+
8
+
9
+ `requestkbn IN(CAST(:requestkbn AS INTEGER)))`の部分は、requestkbnに対応する値がひとつのときは`requestkbn IN(CAST(? AS INTEGER)))`となり、requestkbnに対応する値がふたつあると`requestkbn IN(CAST(?, ? AS INTEGER)))`となる。これは、ログ出力の結果から。
10
+
11
+
12
+
13
+ `Set<Integer> rkKbnSet = new HashSet<>();`ということなので、設定する値はInteger型。であれば、キャストは不要なのでは?
14
+
15
+
16
+
17
+ だから`requestkbn IN(:requestkbn)`とすればいいのではないかと。