作者:
NullLife (廢材大叔有點累)
2014-08-07 22:37:19事情發生在今天工作時,
我在 new 一個 jpa 的 entity 要準備寫入資料庫之前發生的...
因為我打算把剛 new 出來的 entity 當作map key,
來包一些東西之後,再一次做存入,
因此我 new 了兩個 entity 塞到 map 之後,
居然發現我的map還是只有一個元素!!
一開始還以為是我code寫錯,
找了很久,最後發現問題在是entity裡頭覆寫的 hashCode 跟 equals,
因為裏頭會把 seq 拿去算雜湊,
但 new 一個 entity 的時候其 seq 是null,
所以算出來的雜湊一樣!
原本想說找到問題了,因為拿掉覆寫的 hashCode 之後,
連續 new 兩次所看到的reference就不一樣了,
然後因為已經下班時間又很餓,所以我就沒馬上修改雜湊邏輯,就下班吃飯去了~
回家後我還是覺得很奇怪,
所以在家就簡單寫了class來測試,
我依然用公司那個 entity 的 hashCode 跟 equals 的邏輯來寫,
這次 new 出來的又是不同的reference!
所以我一開始以為 hashCode 沒寫好的話會導致 new 出來的 reference 會一樣,
但經過家裡簡單的測試之後,事實又不是這樣...
所以我現在很confuse...
想請問各位前輩有人知道癥結點在哪嗎?
還是 jpa 對於 entity 有什麼特殊的管理?