Derbyで動作してたサンプルをOracle DBの上で動かしたら、JPAのエンティティクラスがたまにぬるぽする。
フィールド変数の.hashCode呼んでる所でNull Pointer Exception。
sqlplusで覗いたら確かに対応するカラムがNULLになってるように見える。ちなみに元のDerbyをijで覗いたらやっぱカラムはNULL。
寧ろ何故に接続先がDerbyだとぬるぽにならぬのかそっちが不思議だ。
NULLに見えて実は""が入っているのか実はスペースなのか。
あるいはDerbyのJDBCドライバは実は気を利かせてカラムがNULLだったら""を渡すようになってるとか*1?
NOT NULL属性とかその辺が関係してるかと思いきやどっちもNULLはあり。
多分JPAを深く知ってると何かこう、アノテーション一発でズバット解決とかスマートな方法があるような気がしないでもないけど、とりあえず問題のフィールドのhashCode他を使う前にnullチェックを入れて対処とするか。
*1:試してみたがそんな事は無かった。derbyドライバもnullを返す
コメント