菜鳥調錯(六)——Hibernate 4.3.x 註解常見錯誤及解決方案

劉水鏡發表於2014-09-16

程式設計的過程免不了遇到各種錯誤,各種問題,而遇到問題,解決問題的這個過程我認為是最讓人興奮的事情。越棘手的問題,解決以後帶來的快感也越大。當一個問題你搞了一下午或者一天,甚至幾天,當你解決的那一刻你會覺得你又獲得了重生。甚至會感覺此時此刻整個世界都是你的。


啊哦,扯的有點遠了。言歸正傳,今天我們要說的是關於Hibernate的一些常見錯誤。大家都知道Java專案更新一個版本可能與之前的版本有很大的差別,變化有時會很大。比如struts1和struts2,再比如Spring3.x由原來的一個jar包拆分成了多個jar包。因此有時候版本衝突的問題會給我們帶來很大的麻煩。下面我們就說說使用Hibernate4.3.x需要注意的幾點。


錯誤一

錯誤資訊:javax.persistence.Table.indexes([Ljavax/persistence/Index

原因:Hibernate4.3不支援@table(name="tablename")

解決方案:使用@entity(name="tablename")代替@table(name="tablename")


錯誤二

錯誤資訊:javax.persistence.JoinColumn.foreignKey()Ljavax/persistence/ForeignKey

原因:Hibernate4.3在多對一對映的時候不能使用@JoinColumn

解決方案:只寫@ManyToOne


錯誤三

錯誤資訊:javax.persistence.OneToMany.orphanRemoval()Z

原因:javaee、ejb或junit的jar包與hibernate-jpa-2.0-api-1.0.0.Final.jar衝突

解決方案:檢視是否存在以上jar包,如果存在,去掉即可


有人說錯誤一可能是個bug,但是目前還沒有一個定論。錯誤二如果還有對應的@OneToMany,那麼就在該處@JoinColumn(name="對應實體_id")。


以上是近期在專案中遇到的一些問題,寫出來跟大家分享一下,希望可以幫到一些人,歡迎大家補充,我會將大家的反饋更新到博文中。


相關文章