質問編集履歴
5
修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -18,8 +18,9 @@
|
|
18
18
|
@Entity
|
19
19
|
@Table(name = "hogehoge")
|
20
20
|
public class Hogehoge {
|
21
|
+
@ManyToOne
|
21
|
-
|
22
|
+
@JoinColumn(name = "Hoge")
|
22
|
-
private
|
23
|
+
private Hoge hoge;
|
23
24
|
}
|
24
25
|
```
|
25
26
|
|
4
コメント追記
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
お世話になります。
|
2
|
-
OracleでNumber型として保持しているカラムをJavaで
|
2
|
+
OracleでNumber型として保持しているカラムをJavaでLong型として定義しています。
|
3
3
|
そのカラムにUpdate文でNULLを入れると、
|
4
4
|
> ORA-00932: データ型が一致しません: NUMBERが予想されましたがBINARYです。
|
5
5
|
|
@@ -46,10 +46,13 @@
|
|
46
46
|
Hoge=?
|
47
47
|
where
|
48
48
|
id=?
|
49
|
+
|
50
|
+
//↓値が入った場合はBIGINT型でパラメータがセットされているが、NULLの場合はVARBINARY型でセットされている。
|
49
51
|
2018-09-27 11:05:23.955 TRACE 92809 --- [nio-8080-exec-7] o.h.type.descriptor.sql.BasicBinder : binding parameter [1] as [VARBINARY] - [null]
|
50
52
|
2018-09-27 11:05:23.955 TRACE 92809 --- [nio-8080-exec-7] o.h.type.descriptor.sql.BasicBinder : binding parameter [2] as [BIGINT] - [1]
|
51
53
|
2018-09-27 11:05:24.322 WARN 92809 --- [nio-8080-exec-7] o.h.engine.jdbc.spi.SqlExceptionHelper : SQL Error: 932, SQLState: 42000
|
52
54
|
2018-09-27 11:05:24.322 ERROR 92809 --- [nio-8080-exec-7] o.h.engine.jdbc.spi.SqlExceptionHelper : ORA-00932: データ型が一致しません: NUMBERが予想されましたがBINARYです。
|
55
|
+
|
53
56
|
```
|
54
57
|
|
55
58
|
・試してみたこと①
|
3
IntegerではなくLongであったため、修正しました。
title
CHANGED
File without changes
|
body
CHANGED
@@ -19,7 +19,7 @@
|
|
19
19
|
@Table(name = "hogehoge")
|
20
20
|
public class Hogehoge {
|
21
21
|
@Column(name = "Hoge")
|
22
|
-
private
|
22
|
+
private Long Hoge;
|
23
23
|
}
|
24
24
|
```
|
25
25
|
|
@@ -27,12 +27,12 @@
|
|
27
27
|
//Repository
|
28
28
|
@Modifying
|
29
29
|
@Query("UPDATE Hogehoge SET Hoge = :Hoge")
|
30
|
-
Integer updateByHoge(@Param("Hoge")
|
30
|
+
Integer updateByHoge(@Param("Hoge") Long Hoge);
|
31
31
|
```
|
32
32
|
|
33
33
|
```ここに言語を入力
|
34
34
|
//Controller
|
35
|
-
//form.getHogeは
|
35
|
+
//form.getHogeはLong型 NULLを返す場合がある
|
36
36
|
HogehogeRepository.updateByHoge(form.getHoge());
|
37
37
|
```
|
38
38
|
|
@@ -46,7 +46,7 @@
|
|
46
46
|
Hoge=?
|
47
47
|
where
|
48
48
|
id=?
|
49
|
-
2018-09-27 11:05:23.955 TRACE 92809 --- [nio-8080-exec-7] o.h.type.descriptor.sql.BasicBinder : binding parameter [1] as [
|
49
|
+
2018-09-27 11:05:23.955 TRACE 92809 --- [nio-8080-exec-7] o.h.type.descriptor.sql.BasicBinder : binding parameter [1] as [VARBINARY] - [null]
|
50
50
|
2018-09-27 11:05:23.955 TRACE 92809 --- [nio-8080-exec-7] o.h.type.descriptor.sql.BasicBinder : binding parameter [2] as [BIGINT] - [1]
|
51
51
|
2018-09-27 11:05:24.322 WARN 92809 --- [nio-8080-exec-7] o.h.engine.jdbc.spi.SqlExceptionHelper : SQL Error: 932, SQLState: 42000
|
52
52
|
2018-09-27 11:05:24.322 ERROR 92809 --- [nio-8080-exec-7] o.h.engine.jdbc.spi.SqlExceptionHelper : ORA-00932: データ型が一致しません: NUMBERが予想されましたがBINARYです。
|
@@ -56,11 +56,11 @@
|
|
56
56
|
```ここに言語を入力
|
57
57
|
@Modifying
|
58
58
|
@Query("UPDATE Hogehoge SET Hoge = :Hoge")
|
59
|
-
Integer updateByHoge(@Param("Hoge")
|
59
|
+
Integer updateByHoge(@Param("Hoge") Long Hoge);
|
60
60
|
↓
|
61
61
|
@Modifying
|
62
62
|
@Query("UPDATE Hogehoge SET Hoge = CASE WHEN :Hoge != null THEN :Hoge ELSE null END")
|
63
|
-
Integer updateByHoge(@Param("Hoge")
|
63
|
+
Integer updateByHoge(@Param("Hoge") Long Hoge);
|
64
64
|
|
65
65
|
//これは成功しましたが、全てのUpdate文に適用させるとなると非常に膨大な作業になってしまうため、他の解決策を探しています。
|
66
66
|
|
2
ログを追記
title
CHANGED
File without changes
|
body
CHANGED
@@ -37,6 +37,21 @@
|
|
37
37
|
```
|
38
38
|
|
39
39
|
|
40
|
+
```ここに言語を入力
|
41
|
+
//ログ
|
42
|
+
2018-09-27 11:05:23.946 DEBUG 92809 --- [nio-8080-exec-7] org.hibernate.SQL :
|
43
|
+
update
|
44
|
+
Hogehoge
|
45
|
+
set
|
46
|
+
Hoge=?
|
47
|
+
where
|
48
|
+
id=?
|
49
|
+
2018-09-27 11:05:23.955 TRACE 92809 --- [nio-8080-exec-7] o.h.type.descriptor.sql.BasicBinder : binding parameter [1] as [INTEGER] - [null]
|
50
|
+
2018-09-27 11:05:23.955 TRACE 92809 --- [nio-8080-exec-7] o.h.type.descriptor.sql.BasicBinder : binding parameter [2] as [BIGINT] - [1]
|
51
|
+
2018-09-27 11:05:24.322 WARN 92809 --- [nio-8080-exec-7] o.h.engine.jdbc.spi.SqlExceptionHelper : SQL Error: 932, SQLState: 42000
|
52
|
+
2018-09-27 11:05:24.322 ERROR 92809 --- [nio-8080-exec-7] o.h.engine.jdbc.spi.SqlExceptionHelper : ORA-00932: データ型が一致しません: NUMBERが予想されましたがBINARYです。
|
53
|
+
```
|
54
|
+
|
40
55
|
・試してみたこと①
|
41
56
|
```ここに言語を入力
|
42
57
|
@Modifying
|
1
試してみたことを追記
title
CHANGED
File without changes
|
body
CHANGED
@@ -34,4 +34,32 @@
|
|
34
34
|
//Controller
|
35
35
|
//form.getHogeはInteger型 NULLを返す場合がある
|
36
36
|
HogehogeRepository.updateByHoge(form.getHoge());
|
37
|
+
```
|
38
|
+
|
39
|
+
|
40
|
+
・試してみたこと①
|
41
|
+
```ここに言語を入力
|
42
|
+
@Modifying
|
43
|
+
@Query("UPDATE Hogehoge SET Hoge = :Hoge")
|
44
|
+
Integer updateByHoge(@Param("Hoge") Integer Hoge);
|
45
|
+
↓
|
46
|
+
@Modifying
|
47
|
+
@Query("UPDATE Hogehoge SET Hoge = CASE WHEN :Hoge != null THEN :Hoge ELSE null END")
|
48
|
+
Integer updateByHoge(@Param("Hoge") Integer Hoge);
|
49
|
+
|
50
|
+
//これは成功しましたが、全てのUpdate文に適用させるとなると非常に膨大な作業になってしまうため、他の解決策を探しています。
|
51
|
+
|
52
|
+
```
|
53
|
+
|
54
|
+
・試してみたこと②
|
55
|
+
```ここに言語を入力
|
56
|
+
//Repository
|
57
|
+
//引数の型をStringに変更
|
58
|
+
@Modifying
|
59
|
+
@Query("UPDATE Hogehoge SET Hoge = :Hoge")
|
60
|
+
Integer updateByHoge(@Param("Hoge") String Hoge);
|
61
|
+
|
62
|
+
//Controller
|
63
|
+
HogehogeRepository.updateByHoge(form.getHoge()!=null?form.getHoge.toString():null);
|
64
|
+
//StringだとNullが通りましたが、こちらも作業量が膨大なため、他の解決策を探しています。
|
37
65
|
```
|