Nhibernate出現No row with the given identifier exists問題的產生原因及解決方法


產生此問題的原因:

有兩張表,table1和table2.產生此問題的原因就是table1里做了關聯<one-to-one>或者<many-to-one>來關聯table2.當hibernate查找的時候,table2里的數據沒有與table1相匹配的,這樣就會報No row with the given identifier exists這個錯.(一句話,就是數據的問題!)

假如說,table1里有自身的主鍵id1,還有table2的主鍵id2,這兩個字段.

如果hibenrate設置的單項關聯,即使table1中的id2為null值,table2中id2中有值,查詢都不會出錯.但是如果table1中的id2字段有值,但是這個值在table2中主鍵值里並沒有,就會報上面的錯!

如果hibernate是雙向關聯,那么table1中的id2為null值,但是table2中如果有值,就會報這個錯.這種情況目前的解決辦法就是改成單項關聯,或者把不對應的數據改對!

解決方法:

1.修改數據使關聯字段能查詢到數據

2.在<many-to-one>中設置not-found="ignore",此時如果關聯關系不存在,對應的屬性值為Null.


免責聲明!

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



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