SpringBoot中jpa批量插入的問題
阿新 • • 發佈:2019-01-27
說起來令人啼笑皆非。本來也是我對SpringBoot不太熟,現在處於學習的階段。公司最近做一個專案,我用SpringBoot架構好了,中間遇到兩個問題:
一是軟體內啟動老是提示註解工廠的錯誤,網上查了一下,原來是因為 @Table註解的問題,把關於表名對映改到@Entity裡面就好了,因為orm的類都是持久化外掛生成好的,我以為應該不會有這方面的問題,加之表太多,而且資料庫又總是不確定。我不願老做無用功,所以沒去改。後來自己寫了一個小demo,連上資料庫表,同樣的問題,改過來真的就解決了;
二就是批量插入時老是報session處理不同物件的問題,一直不明白為什麼。還是在這個demo裡,做了幾種嘗試,由於hibernate是被層層封裝得比較嚴實,問題也不好查。我曾經嘗試過用Jdbc來替代jpa,結果成功了。因為jdbc不存在session的問題。但是我也很想指導問題出在哪裡。想自己處理session,但是封裝了自己不知道怎麼能夠取出來。
今天在嘗試過程中,想到在hibernate中,儲存和更新是由id來判斷的,會不會處理的時候id一樣了,所以才會出錯。但是資料庫表中我命名是設定了自動增長的嘛。不過持久化外掛做orm對映的時候沒有加相關注解。我還以為@Id這個問題能夠解決呢。很隨意地把@GeneratedValue(strategy = GenerationType.AUTO)這個註解加到id欄位上面,我暈了,竟然解決了。說到底,我還是太相信ide的那些外掛了,看來很多時候還是得一是一二是二,不能偷懶,不能輕信開發環境。
記一筆,警示自己!