No row with the given identifier exists:錯誤另解


  這是一個hibernate常見的問題。搜索出來最多的答案都是如下面這篇文章所述:

  http://blog.csdn.net/eyejava/article/details/1896492

  但我覺得我問題不在這里,因為在我添加一個新的實體類關系之前,所有的映射配置都沒有問題的,但現在只要是這幾個互相關聯的實體類的操作均出現了問題。我的實體類關系如下:

     

  從圖中可以發現,所有的實體類都和Dept直接或者間接有關系,這些實體類的操作都出現了問題。瀏覽器報的錯是沒有Dept這個實體類。

  

  由此回答啟發,我去觀察了數據庫。果然發現問題是這樣的:我的關系1多對一原本是不存在的,是我后來調整實體類關系的時候加上去的,數據庫中有了deptId這一字段,但是這一字段值為null。刪除了相關表中之前用於測試的數據之后果然一切都變得美好了。后來我去看日志文件,才發現日志文件中居然有這樣的錯誤:

  2016-04-21 21:42:19,043 [main] ERROR org.hibernate.tool.hbm2ddl.SchemaUpdate - Unsuccessful: alter table curriculum add index                    FKC5509C3B2405960D (deptId), add constraint FKC5509C3B2405960D foreign key (deptId) references twcs4sxau.dept (deptId)
  2016-04-21 21:42:19,044 [main] ERROR org.hibernate.tool.hbm2ddl.SchemaUpdate - Cannot add or update a child row: a foreign key constraint fails         (`twcs4sxau`.`#sql-a90_47`, CONSTRAINT `FKC5509C3B2405960D` FOREIGN KEY (`deptId`) REFERENCES `dept` (`deptId`))

  如果我早點看到這段話,會早點察覺到是數據庫的問題的。

  從這次的錯誤中我總結出兩點:

  1、出錯了先看console,再看日志文件,得出錯誤原因。

  2、不要亂改實體類的關系。我是因為初次並且獨立做這個項目,出了錯只能自己后期發現,沒有人商量或者提醒。畢設開始倉促,並沒有好好設計就開始寫代碼了,這給我后期真是帶來了無窮無盡的麻煩啊。

  另外我還看見一個回答很具有啟發性:

  http://www.cnblogs.com/jianxh/articles/82350.html

  直接指出了是破壞了外鍵關系,讓確定表的關系是否正確。這與我在日志文件中發現的提示相吻合。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM